Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails—创建新模型所需的帮助_Ruby On Rails_Ruby On Rails 3_Associations_Models - Fatal编程技术网

Ruby on rails Rails—创建新模型所需的帮助

Ruby on rails Rails—创建新模型所需的帮助,ruby-on-rails,ruby-on-rails-3,associations,models,Ruby On Rails,Ruby On Rails 3,Associations,Models,我想创建模型消息,以便人员可以在组#show页面中发布新消息。但为此,她/他必须来自相关的组,或所有者,或拥有该组的组成员(成为成员) 模型消息的关联如何?类消息

我想创建模型
消息
,以便
人员
可以在
组#show
页面中发布新消息。但为此,她/他必须来自相关的
,或所有者,或拥有该组的组成员(成为成员)

模型
消息的关联如何?

类消息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
属于某人 属于:组 验证:具有组权限 def具有组权限 除非self.person.owned_groups.include?(self.group)| self.person.groups.include?(self.group) self.errors.add(:base,“您没有向该组添加邮件的权限。” 结束 结束 结束
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