通过深度关联访问 rails 属性

Posted

技术标签:

【中文标题】通过深度关联访问 rails 属性【英文标题】:Accessing rails attributes through deep associations 【发布时间】:2013-08-20 22:56:29 【问题描述】:

这是我的相关模型:

class ListItem < ActiveRecord::Base
    belongs_to  :inventory_item
    belongs_to  :shopping_list
    belongs_to  :item
end

class ShoppingList < ActiveRecord::Base
    has_many :list_items
    belongs_to  :user, :foreign_key => :user_id
end

class InventoryItem < ActiveRecord::Base

    belongs_to  :item, :foreign_key => :item_id
    belongs_to  :vendor
    has_many    :list_items
end

我正在尝试在我的视图中访问 InventoryItem 的属性。这是我目前在我的ShoppingListController 中拥有的内容。

def show
  @list_items = ShoppingList.find(params[:id]).list_items
end

我可以做类似@inventory_items = @list_items.inventory_items 的事情吗?我尝试过的代码和它的变体没有用。我在这里想念什么?通过这样的多个模型访问属性的任何提示?提前致谢!

【问题讨论】:

显示什么错误? 【参考方案1】:

最直接的方法是在 ShoppingList 类上使用 has_many:

has_many :inventory_items, through: :list_items

【讨论】:

正是我所缺少的。谢谢!

以上是关于通过深度关联访问 rails 属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在has_many中获取模型的属性:通过Rails 5中的关联

带有has_many的模型中的属性总和:通过关联在Rails 5中不起作用

Rails:使用 where 子句查找深度嵌套的关联

为啥 Rails 在通过关联创建新记录时不更新其关联缓存?

审计与 Rails Audited gem 的深度关联

Rails 通过关联加入