我有类似以下的内容
class Group < ActiveRecord::Base
has_many :group_users
end
class GroupUser < ActiveRecord::Base
belongs_to :user, :group
end
class User < ActiveRecord::Base
has_many :group_users
end
我没有使用has_many_through的原因是因为group_user类拥有的信息多于链接表,所以我希望能够访问这些值。
我想做的是将@groups传递给页面并循环遍历组用户,但同时获取用户对象
所以
<% @groups.each do |group| %>
<%= group.group_user.user.name %>
<% end %>
答案 0 :(得分:0)
我将如何做到这一点:
用户模型
class User < ActiveRecord::Base
has_many :memberships
has_many :groups, :through => :memberships
end
群组模型
class Group < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
end
会员资格模式
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
<强>控制器强>
def show
@groups = Group.all
end
查看强>
<% @groups.each do |group| %>
<% group.users.each do |user| %>
<%= user.name %>
<% end %>
<% end %>
可能有几种方法可以做到,但这应该让你开始。
希望这有帮助!
答案 1 :(得分:0)
如果要从GroupUser模型访问属性,请执行以下操作:
<% @groups.each do |group| %>
<% group.group_users.each do |group_user| %>
<%= group_user.attribute_name %>
<%= group_user.user.name
<% end %>
<% end %>
要从SQL方面提高效率,可以使用预先加载:
Group.all(:includes => [:group_users => :user])
˚F