Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两种模型的Ruby-on-Rails关系_Ruby On Rails_Ruby_Ruby On Rails 3_Activerecord_Rails Migrations - Fatal编程技术网

两种模型的Ruby-on-Rails关系

两种模型的Ruby-on-Rails关系,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,rails-migrations,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,Rails Migrations,我有两种不同的型号 项目模型 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_acces

我有两种不同的型号

项目模型

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
class项
事件模型

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
class事件
我不知道如何执行以下操作:

  • 一个
    事件
    有多个
    项目
    ,可位于
    事件
  • 事件
    历史记录仍然显示来自特定事件的

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

我一辈子都搞不懂这个。如果我能在这个问题上得到一些指导,我将不胜感激!提前感谢你的帮助


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

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

class Event
  def items
    category.items
  end
end
然后在控制器中

@event = Event.find(params[:id])
@items = @event.try(:items) 

如果一个
类别
可以有许多
事件
,我认为您必须在
项目
中添加
事件id
,以便能够准确地知道在一个
事件
上有哪些
项目
。 (在这种情况下,添加关系)

或者,如果一个
项目
可以在多个
事件
上,则在
事件
项目
之间联接表,并将_和_属于_多个项目

编辑:

如果是这样的话,添加表
events\u items
,关系
has\u和属于\u-many:items
(在
Event
中:events
Item
中),并阅读
has\u和\u-many
文档


否则,如果您正在查找某个
事件中出现的
项目
,您将找到所有
项目
,这些项目都出现在所有
事件中
,它们与您正在调查的
事件具有相同的
类别。

我认为您想要做的是:

class Item < ActiveRecord::Base
    belongs_to :event
end  

您应该使用
has many:through
has_和_-belient_-to_many
关系。在调用
items
属性之前,请确保加倍检查
类别
关联是否存在。我真的很困惑。
项目可以位于
事件中。
类似于在所述
事件
中使用的扬声器或麦克风。因此,我们在一个
事件中有多个
事件
结束,项目返回存储位置。但是,如果我查看该事件,我可以看到该
事件中的项目。
事件
表具有
:名称、位置、日期、类别、id
。那么,如何在不同的
事件中关联多个
?我真的很困惑。
项目可以位于
事件中。
类似于在所述
事件
中使用的扬声器或麦克风。因此,我们在一个
事件中有多个
事件
结束,项目返回存储位置。但是,如果我查看该事件,我可以看到该
事件中的项目。
事件
表具有
:名称、位置、日期、类别、id
。那么,我如何在不同的
事件中关联多个
项目
?我改变了我的建议,希望能回答您的问题。