嵌套:has_many,:通过属性

时间:2012-02-20 02:24:53

标签: ruby-on-rails ruby-on-rails-3 has-many-through

我正在使用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)。我看过herehere(以及其他一些地方),但我无法将这些概念翻译成我的项目。

1 个答案:

答案 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