Miscellany
public text v1 · immutable validates_presence_of :number
validates_uniqueness_of :number,
:scope => 'floor_id',
:if => Proc.new { |closet| !closet.floor.rooms.select{|r| r.number.eql?(closet.number) }.any? },
:message => 'already exists on this floor'
validates_length_of :number, :maximum => 10
PS: I know rooms/closets are similar, but they are different enough that my newb DB skills didn't want to do single table inheritance ;)