Подтвердить что ты не робот

Нужны данные из таблицы соединений rails, has_many: через

У меня есть 3 таблицы - пользователи, вещи и последующие. Пользователи могут следить за таблицей в следующей таблице, связывая user_id с things_id. Это означало бы:

class User
  has_many :things, :through => :follows
end

class Thing
  has_many :users, :through => :follows
end

class Follow
  belongs_to :users
  belongs_to :things
end

Таким образом, я могу получить вещь. без проблем. Моя проблема в том, что в следующей таблице у меня есть столбец с именем "отношение", поэтому я могу установить последователя как "админ", я хочу иметь доступ к этому отношению. Поэтому в цикле я могу сделать что-то вроде:

<% things.users.each do |user| %>
  <%= user.relation %>
<% end %>

Есть ли способ включить отношение в исходный объект пользователя? Я пробовал :select => "follows.relation", но, похоже, он не присоединился к атрибуту.

4b9b3361

Ответ 1

Для этого вам нужно использовать бит SQL в has_many. Что-то вроде этого, надеюсь, будет работать. has_many :users, :through => :follows, :select => 'users.*, follows.is_admin as is_follow_admin'

Затем в цикле вы должны иметь доступ к user.is_follow_admin

Ответ 2

Для пользователей, использующих рельсы 4, использование: order,: select и т.д. устарело. Теперь вам нужно указать следующее:

has_many :users, -> { select 'users.*, follows.is_admin as is_follow_admin' }, :through => :follows

Ответ 3

Возможно, вы сможете сделать что-то вроде:

<% things.follows.each do |follow| %>
  <%= follow.relation %>
  <%= follow.user %>
<% end %>