Rails:从嵌套模型中检索多态数据

时间:2012-09-17 18:29:17

标签: ruby-on-rails-3 activerecord controller

我正在尝试从一个盒子中检索所有项目的数据,一个盒子可以有隔间,我想在盒子级别获取所有隔间信息。由于盒子不一定有隔间,因此物品是多态的。

MODEL

class Box < ActiveRecord::Base
  has_many :compartments
  has_many :items, :as => :itemable
end

在我的控制器中,我可以通过以下方式获得结果:

@box = Box.find(params[:id])

@itemable = @box.compartments.first

@itemable = @box.compartments.last

查看

<% @items.each do |item| %>
<%= item.name %>
<% end %>

但如果我再尝试

@itemable = @box.compartments

OR

@itemable = @box.compartments.find(:all)

我收到错误

undefined method `items' for #<ActiveRecord::Array>

OR

undefined method `items' for #<ActiveRecord::Relation>

任何人都可以帮助从所有隔间取回结果吗?

1 个答案:

答案 0 :(得分:0)

所以在隔间中你有

belongs_to :box
has_many :items, :as => :itemable

是这样的吗? @box.compartments应该返回一系列隔间吗?听起来items以某种方式在@box.compartments以某种方式被调用