【问题标题】:In Rails: how do I create a many-to-many relationship where both models have teh join key?在 Rails 中:如何在两个模型都有连接键的情况下创建多对多关系?
【发布时间】:2016-08-24 20:32:05
【问题描述】:

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

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

【问题讨论】:

  • has_many b, through => :magic

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


【解决方案1】:

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

Rails 方式:您应该使用中间模型和表来创建拥有多归属关系,如 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 的方式。 :)

【讨论】:

  • 永远不会!我会坚持的!
  • 无论如何,它工作得很好!它甚至不是hackish!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多