2011-05-23 57 views
1
class Person 
    has_many :owned_groups, :class_name => "Group", :foreign_key => :owner_id 
    has_many :owned_group_memberships, :through => :owned_groups, 
       :source => :group_memberships 

    has_many :group_memberships, :foreign_key => "member_id" 
    has_many :groups, :through => :group_memberships 

end 

class GroupMembership 
    belongs_to :member, :class_name => 'Person' 
    belongs_to :group 
end 

class Group 
    belongs_to :owner, :class_name => "Person" 
    has_many :group_memberships 
    has_many :members, :through => :group_memberships 
end 

我想創建模型Message所以Person可以在group#show頁面發佈新消息。但爲此,她/他必須來自Group或所有者,或者擁有該組中的group_membership(成爲成員)。導軌 - 幫助需要創建一個新模式

模型Message的關聯怎麼樣?

回答

2
class Message < ActiveRecord::Base 
    belongs_to :person 
    belongs_to :group 
    validate :has_group_permission 

    def has_group_permission 
    unless self.person.owned_groups.include?(self.group) || self.person.groups.include?(self.group) 
     self.errors.add(:base, "you don't have permission to add a message to this group." 
    end 
    end 
end