class Closet < ActiveRecord::Base
belongs_to :floor
validates_associated :floor
has_many :switches
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
before_destroy 'return false unless self.switches.length == 0'
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 ;)