Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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_View_Models - Fatal编程技术网

Ruby on rails Rails-视图上的模型关联

Ruby on rails Rails-视图上的模型关联,ruby-on-rails,ruby-on-rails-3,view,models,Ruby On Rails,Ruby On Rails 3,View,Models,我有这样的模型: class Person has_many :groups has_many :group_memberships, :foreign_key => "member_id" end class Group_Membership belongs_to :member, :class_name => 'Person' belongs_to :group end class Group belongs_to :person has_many :group_member

我有这样的模型:

class Person
has_many :groups
has_many :group_memberships, :foreign_key => "member_id"
end

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

class Group
belongs_to :person
has_many :group_memberships
has_many :members, :class_name => "Person", :through => "group_memberships", :foreign_key => "member_id"
一个人请求
会员资格
,创建一个状态为false的
模型。在其
person#show
页面上的
组的所有者可以看到谁请求
成员资格
,以及他参加的
组。由于
组成员
属于
a
个人
,但
组成员
也属于
a
,我如何在
person#show
中创建一个视图,允许
person
查看谁在
组中请求了
成员资格
,以及
person
拥有哪些
组成员资格

###编辑##

此处的
状态
默认为
false
,因为如果所有者
编辑该状态并将其设置为
true
,则
组中只会接受
人员


从这个问题中得出的想法:

以下是一些psuedo代码,我认为这些代码将帮助您找到想要的东西:

很好的警告,我根本没有测试过它,我还在学习新的AR模式:)

我认为你的团队成员关系可能最适合作为一种关系:通过关系,然后围绕关系可能具有的不同“状态”创建范围。你也可以在这方面寻求帮助。

我想是这样的

class Person
  has_many :groups
  has_many :group_memberships, :foreign_key => "member_id"
  has_many :own_groups, :class_name => "Group", :through => "group_memberships", :foreign_key => "group_id"

end

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

class Group
  belongs_to :person
  has_many :group_memberships
  has_many :asked_group_memberships, :class_name => 'Group_Membership', :conditions => ['status = ?', false]
  has_many :members, :class_name => "Person", :through => "group_memberships", :foreign_key => "member_id", :conditions => ['group_memberships.status = ?', true]
end

我没有看到一种关系来定义谁要求加入一个团队…只是谁已经拥有了一个…这只是一种缺失的模式或关系。如果我有这些宝贵的信息,我可能会更好地回答你的问题。这就是状态进入的地方:如果它是假的,会员资格还没有被接受。组的所有者将通过将状态更新为true来接受组中的人员,或通过删除model.oops来拒绝。阅读是我的朋友。很抱歉,谢谢你的回答!我在想一件很简单的事。。。没有办法在不更改代码和数据库的情况下实现我的目标吗?您当前的代码如何知道组所有者以及其他成员是否与该组建立了经批准的关系?组所有者是已知的,因为组有一个名为
person\u id
的FK。我对这种关系的想法只是简单地使用
状态
,我不在乎是否总是在模型
组成员
上创建这种关系,我的想法是尝试在视图中过滤它,只显示那些状态为true的视图或类似的视图。我是从stack的另一个问题中得出这个想法的,我认为一个团队可能会因为某种原因拥有很多所有者。我想我读得不好。如果您已经有一个状态列,那么您可以将组成员模型中的范围更改为范围
:requested,:where(:status=>“approved”)
,谢谢您的回答!通过组表上的FK(person\u id),已经完成了自己的组操作,并且工作正常。我想要的只是一种方法,让这个组的所有者看到他的组中存在的所有组成员资格,并接受或拒绝它们。什么问题<代码>个人。第一。团体。第一。团体成员身份
,否?
class Person
  has_many :groups
  has_many :group_memberships, :foreign_key => "member_id"
  has_many :own_groups, :class_name => "Group", :through => "group_memberships", :foreign_key => "group_id"

end

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

class Group
  belongs_to :person
  has_many :group_memberships
  has_many :asked_group_memberships, :class_name => 'Group_Membership', :conditions => ['status = ?', false]
  has_many :members, :class_name => "Person", :through => "group_memberships", :foreign_key => "member_id", :conditions => ['group_memberships.status = ?', true]
end