Я использую has_many: through, чтобы создать ассоциацию между двумя моделями с использованием сквозного соединения с именем list_items
:
user.rb:
has_many :list_items
has_many :wishes, :through => :list_items
wishe.rb:
has_many :list_items
has_many :users, :through => :list_items
list_item.rb:
belongs_to :user
belongs_to :wish
Это прекрасно работает, однако у list_items
есть дополнительные атрибуты для модели wishes
, к которым я хотел бы получить доступ на основе критериев из users
(точнее, current_user
). В настоящее время я могу получить доступ к этому атрибуту, используя такой код:
wishes_controller.rb:
@wishes = current_user.wishes
index.html.haml:
-wish.list_items.each do |list_item|
-if list_item.user_id == current_user.id
=list_item.list_position
Это прекрасно работает, однако, держу пари, что есть более элегантный способ сделать это, имея возможность доступа к нему, например, wishes.list_position
(который вытянет соответствующую list_position на основе идентификатора current_user). Я посмотрел здесь и здесь (и ряд дополнительных мест), но я не смог перевести эти концепции в мой проект.