Ruby on Rails 两个模型的关系



我有两种不同的模型。

物料模型

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。(在这种情况下,请为此添加关系)。

或者联接EventItem之间的表,如果一个Item可以位于多个Events上,则has_and_belongs_to_many

编辑:

如果是这样,请添加表events_items,关系has_and_belongs_to_many :itemsEvent:events Item),并阅读has_and_belongs_to_many的文档

否则,如果您正在寻找已在某个EventItems,您将找到与您正在调查的Event具有相同Category的所有Events上的所有Items

相关内容

  • 没有找到相关文章

最新更新