Возможно ли связывать запросы в Rails 3? - PullRequest
0 голосов
/ 30 июня 2011

У меня есть что-то вроде следующего

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 на страницу и перебрать пользователей группы, но также получить объект user

так

<% @groups.each do |group| %>
    <%= group.group_user.user.name %>
<% end %>

Ответы [ 2 ]

0 голосов
/ 30 июня 2011

Если вы хотите получить доступ к атрибутам из модели 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

0 голосов
/ 30 июня 2011

Вот как бы я это сделал:

Модель пользователя

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 %>

Вероятно, есть несколько способов сделать это, но это поможет вам начать.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...