Ruby on rails 4 如何指定has_many到vs has_many
因此,我试图找出如何通过关联指定基于has_many和has_many:调用对象的所有实例。我有用户、组和成员。成员模型是组和用户的配对。在该模型中,这些组还具有用户id。因此,在您看到代码后,这将更有意义: 用户模型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
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之类的。无论如何,谢谢我会考虑调用1:N关系来分组另一个名字。所以你最终会得到这样的结果
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。我想就是这样,以防有人有这个问题。谢谢普惠制!