Zeroz
Zeroz

Reputation: 125

Rails - Help needed to create a New Model

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

I want to create the model Message so a Person can post a new message in the group#show page. But for that she/he must be from the Group in question, or the owner, or have a group_membership (be a member) from this group.

How would be the associations of the model Message?

Upvotes: 1

Views: 363

Answers (1)

Jonathan Tran
Jonathan Tran

Reputation: 15276

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

Upvotes: 2

Related Questions