0

我有两种不同的型号。

项目型号

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

我无法弄清楚如何执行以下操作:

  • AnEvent有多个Item可以在Event.
  • Event历史仍然显示特定Items事件。

  • 将显示来自事件的项目:localhost/event/:id/items

我一生都无法弄清楚这一点。如果我能在这个问题上得到一些指导,我将不胜感激!提前感谢您的所有帮助。

我已经看到了:through我相信我必须在这里使用的用法。

4

3 回答 3

1

如果我正确理解了您的问题,您可以在这里在事件模型中编写类似的内容。

class Event
  def items
    category.items
  end
end

然后在控制器中,

@event = Event.find(params[:id])
@items = @event.try(:items) 
于 2012-11-23T14:56:07.247 回答
0

我认为您想要做的是:

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
于 2012-11-23T15:06:54.790 回答
0

如果一个Category可以有很多Events,我认为您必须添加event_id才能Item确切地知道确切的Items内容Event。(在这种情况下添加关系)。

或者在EventandItem和 has_and_belongs_to_many 之间连接表,如果一个Item可以在多个上Events

编辑:

如果是这样,请添加表events_items、关系has_and_belongs_to_many :items(inEvent:eventsin ),Item并阅读.has_and_belongs_to_many

否则,如果您正在寻找Items某个已经存在的内容,Event您会发现所有内容Items都与您正在调查的内容相同。 EventsCategoryEvent

于 2012-11-23T15:04:44.863 回答