我正在使用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
那样访问它(它会根据current_user id提取相应的list_position)。我看过here和here(以及其他一些地方),但我无法将这些概念翻译成我的项目。
答案 0 :(得分:3)
查看Need data from rails join table, has_many :through
试试这个。
user.rb:
has_many :wishes, :through => :list_items, :select => 'wishes.*, list_items.list_position as list_position'
这会给你:
- @wishes.each do |wish|
= wish.list_position