在Rails中:如何创建多对多关系,其中两个模型都有联接密钥?

时间:2016-08-24 20:32:05

标签: ruby-on-rails activerecord associations belongs-to

我有模型AB。两者都有magic列。如果来自a的记录A和来自b的{​​{1}}具有相同的B,则它们是相关的。来自magicA的许多记录可能具有相同的B

有没有办法在我的Rails模型中表达这种magic类的东西?怎么样?

1 个答案:

答案 0 :(得分:2)

遵循Rails方式具有很高的价值,而您尝试做的事情并不是标准的做法。

Rails方式:您应该使用中间模型和表创建一个has-and-belongs-to-many-many关系,如Rails Guides网站中所述。

但如果你坚持...... :试试这个:

# model_a.rb
class ModelA < ActiveRecord::Base
  has_many :model_bs, class_name: 'ModelB',
                      foreign_key: :magic,
                      primary_key: :magic
end

# model_b.rb
class ModelB < ActiveRecord::Base
  has_many :model_as, class_name: 'ModelA',
                      foreign_key: :magic,
                      primary_key: :magic
end

我还没有对此进行过测试,但我相信它会起作用。

最后的话...... 不要这样做!按照Rails的方式。 :)