class ClosetList < ActiveRecord::Base belongs_to :user has_many :hangers, :class_name => 'ClosetHanger', :foreign_key => 'list_id', :dependent => :nullify attr_accessible :description, :hangers_owned, :name, :visibility validates :name, :presence => true, :uniqueness => {:scope => :user_id} validates :user, :presence => true validates :hangers_owned, :inclusion => {:in => [true, false], :message => "can't be blank"} scope :alphabetical, order(:name) scope :public, where(arel_table[:visibility].gteq(ClosetVisibility[:public].id)) scope :visible_to, lambda { |user| condition = arel_table[:visibility].gteq(ClosetVisibility[:public].id) condition = condition.or(arel_table[:user_id].eq(user.id)) if user where(condition) } after_save :sync_hangers_owned! def sync_hangers_owned! if hangers_owned_changed? hangers.each do |hanger| hanger.owned = hangers_owned hanger.save! end end end end