具有相同模型的多对多关系 - 2个连接表

时间:2014-08-14 12:04:46

标签: ruby-on-rails ruby-on-rails-4 many-to-many jointable

我有一个名为Course.each的课程与其他课程有两种多对多的关系。所以我需要两个连接表。我怎样才能在rails中实现它?

1 个答案:

答案 0 :(得分:3)

请参阅以下(looong)答案,了解在同一模型的对象之间进行HABTM关联的可能方法的完整列表:https://stackoverflow.com/a/2168528/454094

一旦您决定是使用“普通”连接表还是使用:through选项与中间的模型,定义两个不同的HABTM关联不应该比使用不同的名称和连接表/模型更复杂对他们来说E.g。

class Person < ActiveRecord::Base

  has_and_belongs_to_many(:friends,
    class_name: "Person",
    join_table: "friend_connections",
    foreign_key: "person_a_id",
    association_foreign_key: "person_b_id")

  has_and_belongs_to_many(:foes,
    class_name: "Person",
    join_table: "foes_connections",
    foreign_key: "person_a_id",
    association_foreign_key: "person_b_id")

end

注意:如链接答案所述,上述关联将是单向的。例如。 bob.friends << alice不会自动bob出现alice.friends。根据您的特定项目,可能是也可能不是交易破坏者。不过,希望这会有所帮助。