我正在尝试从一个盒子中检索所有项目的数据,一个盒子可以有隔间,我想在盒子级别获取所有隔间信息。由于盒子不一定有隔间,因此物品是多态的。
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>
任何人都可以帮助从所有隔间取回结果吗?
答案 0 :(得分:0)
所以在隔间中你有
belongs_to :box
has_many :items, :as => :itemable
是这样的吗? @box.compartments
应该返回一系列隔间吗?听起来items
以某种方式在@box.compartments
以某种方式被调用