我有两种不同的模型。
物料模型
class Item < ActiveRecord::Base
belongs_to :category
attr_accessible :make, :model, :name, :purchasedfrom, :qrcode, :serialnumber, :category_id
end
事件模型
class Event < ActiveRecord::Base
belongs_to :category
attr_accessible :name, :location_id, :category_id
end
我不知道如何执行以下操作:
- 一个
Event
有多个Item
可以在Event
。 Event
历史记录仍显示特定事件的Items
。将显示事件中的项目:本地主机/事件/:id/项目
我一辈子都想不通。 如果我能在这个问题上得到一些方向,我将不胜感激!提前感谢您的所有帮助。
我已经看到了:through
的使用,我相信我必须在这里使用。
如果我正确理解了你的问题,在这里你可以在事件模型中写这样的东西。
class Event
def items
category.items
end
end
然后在控制器中,
@event = Event.find(params[:id])
@items = @event.try(:items)
我认为你想做的是:
class Item < ActiveRecord::Base
belongs_to :event
end
对于活动:
class Event < ActiveRecord::Base
has_many :items
end
然后,您应该能够通过调用以下命令查看事件的项目:
@event = Event.find_by_id(:id)
@event.items.all
<</div>
div class="one_answers">如果一个Category
可以有很多Events
我认为您必须在Item
中添加event_id
,以便能够确切地知道一个Event
上发生了什么Items
。(在这种情况下,请为此添加关系)。
或者联接Event
和Item
之间的表,如果一个Item
可以位于多个Events
上,则has_and_belongs_to_many
编辑:
如果是这样,请添加表events_items
,关系has_and_belongs_to_many :items
(Event
和:events
Item
),并阅读has_and_belongs_to_many
的文档。
否则,如果您正在寻找已在某个Event
上Items
,您将找到与您正在调查的Event
具有相同Category
的所有Events
上的所有Items
。