Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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 4 如何指定has_many到vs has_many_Ruby On Rails 4_Has Many Through_Has Many - Fatal编程技术网

Ruby on rails 4 如何指定has_many到vs has_many

Ruby on rails 4 如何指定has_many到vs has_many,ruby-on-rails-4,has-many-through,has-many,Ruby On Rails 4,Has Many Through,Has Many,因此,我试图找出如何通过关联指定基于has_many和has_many:调用对象的所有实例。我有用户、组和成员。成员模型是组和用户的配对。在该模型中,这些组还具有用户id。因此,在您看到代码后,这将更有意义: 用户模型 class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :val

因此,我试图找出如何通过关联指定基于has_many和has_many:调用对象的所有实例。我有用户、组和成员。成员模型是组和用户的配对。在该模型中,这些组还具有用户id。因此,在您看到代码后,这将更有意义:

用户模型

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  has_many :groups
  has_many :groups, :through => :members
end
class用户:成员
结束
群模型

class Group < ActiveRecord::Base
    has_many :users, :through => :members
    belongs_to :user
end
类组:成员
属于:用户
结束
成员模型

class Member < ActiveRecord::Base
  belongs_to :groups
  belongs_to :users
end
类成员
索引视图

<!--these are the groups I own (the group.user_id is my id) NEEDS EDITING-->
  <% @groups.each do |group| %>
      <%= link_to group.title, group_path(group) %>
      <%= truncate group.desc %>
  <% end %>

<!--I'm a member of these groups (connected through the member model) NEEDS EDITING'-->
  <% current_user.groups.order(:created_at).each do |group| %>
      <%= link_to group.title, group_path(group) %>
      <%= truncate group.desc %>
  <% end %>

我试图找出如何在索引视图中调用不同类型的关联用户和组

我想得到一个将我列为管理员(group.user_id)的所有组的列表,然后我想得到一个单独的列表,列出我所属的所有组(通过成员模型)


我知道我可以通过find或where查询它。然而,我希望有一个简单的方法,像current_user.groups之类的。无论如何,谢谢
class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  has_many :owned_groups, class_name: 'Group'
  has_many :groups, :through => :members
end
class用户:成员
结束
因此,索引视图看起来像:

<% current_user.owned_groups.each do |group| %>
    <%= link_to group.title, group_path(group) %>
    <%= truncate group.desc %>
<% end %>


<% current_user.groups.order(:created_at).each do |group| %>
    <%= link_to group.title, group_path(group) %>
    <%= truncate group.desc %>
<% end %>


好的,我想我明白了,但我被1:N弄糊涂了。这到底是什么意思?此外,拥有的集团会是一个单独的模式吗?或者“class_name:‘Group’”是否将所拥有的组路由回groups模型?我以前从未见过这样的情况,这很酷,我实现了这个更改,但我得到了一个奇怪的错误“在模型用户中找不到关联:成员”,而在我的用户模型中我有:“has_many:groups,:through=>:members”另外,这个错误突出显示了一行:“current_User.groups.order…”对不起,1:N我指的是“一对多”用户与其拥有的组之间的关系。N:N关系将通过Members表在用户和组之间建立。当然,谢谢,我现在在同一行代码中得到一个不同的错误:uninitialized constant User::Groups。我认为这是因为名称与类名“group”相同,所以有一种方法可以通过members association line将类名“member”添加到多个组中。我要尝试一下OMG,在尝试了100种不同的方法之后,我想我最终回到了这个解决方案,修复了未初始化的常量错误,并且我修复了成员类为singular Alley tos。我想就是这样,以防有人有这个问题。谢谢普惠制!