Rails - нужна помощь для создания новой модели - PullRequest
1 голос
/ 23 мая 2011
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?

1 Ответ

2 голосов
/ 23 мая 2011
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
...