Skip to content

Instantly share code, notes, and snippets.

@joemsak
Created October 2, 2011 19:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joemsak/1257850 to your computer and use it in GitHub Desktop.
Save joemsak/1257850 to your computer and use it in GitHub Desktop.
<%= f.text_field :pending_room_number, :value => @student.room_number %>
<%= f.collection_select :residence_id, Residence.all, :id, :name %>
class Room < ActiveRecord::Base
belongs_to :residence
has_many :students
end
class Student < ActiveRecord::Base
belongs_to :room
delegate :number, :residence, :to => :room, :prefix => true, :allow_nil => true
attr_accessor :pending_room_number, :residence_id
before_save :assign_room
def assign_room
self.room = if room = Room.find_by_number_and_residence_id(pending_room_number, residence_id)
room
else
Room.create! { :number => pending_room_number, :residence_id => residence_id}
end unless self.room.present?
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment