在 Rails 中:如何创建两个模型都有连接键的多对多关系?

In Rails: how do I create a many-to-many relationship where both models have teh join key?

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

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

遵循 Rails 方式具有很高的价值,而您尝试做的并不是执行此操作的标准方式。

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

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

# 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 的方式。 :)