如何在两个对象之间建立关系,其中两个对象都需要包含许多其他对象?

时间:2016-11-06 07:12:53

标签: ruby-on-rails rails-activerecord

我的情况是这样的:我有两个模型,Model(如汽车模型)和Engine。我有一些Models有多个Engine(不同的模型年有不同的引擎),我有一些Engines属于多个不同的Models(单引擎)在多个模型中重复使用。)

请原谅我对Rails和ActiveRecord不感兴趣,但这似乎比has_manybelongs_to更复杂。我错了。我还应该注意到我正在使用Rails 5

鉴于我已经有我的脚手架/模型,我宁愿不删除它们,如何编写迁移来实现上述情况?我需要将哪些内容添加到相应的模型中?

1 个答案:

答案 0 :(得分:3)

使用多对多关系,确保您的迁移名称包含JoinTable

rails g migration CreateEngineModelJoinTable engines models

引擎类

class Engine < ActiveRecord::Base
  has_and_belongs_to_many :models
end

模型类

class Model < ActiveRecord::Base
  has_and_belongs_to_many :engines
end

您可以通过

访问它
engines = model.engines
models = engine.models