如何在这方面建立联系

How to make associations on this

你好,我是 rails 的新手。我受够了活动记录协会。我确实从 rails 指南中学习了联想。然而,我找不到一种明确的方法来向图中建议的模型添加关联。

我怀疑一个外键(SECOND MODEL)是否可以引用两个主键(SECOND MODEL LEVEL 2 FIRST & SECOND MODEL LEVEL 2 SECOND)。这样做是因为用户必须在向第二个模型中插入值时选择是从第二个模型级别 2 FIRST TABLE 还是从第二个模型级别 2 第二个 TABLE 添加。

如果你觉得这很难理解,请发表评论,我会做出适当的修改。我希望了解如何通过连接条件从 FINAL LEVEL FIRST 使用 BASE-MODEL 进行查询。

您可以使用 多态关联 来引用一个 table OR 另一个,根据发布的内容检查下面的模型图片:

class BaseModel
    has_many :first_models
    has_many :second_models
end

class FirstModel
    belgons_to :base_model
    has_one :level_two_first_model
end

class LevelTwoFirstModel
    belgons_to :first_model
end


class SecondModel
    belgons_to :base_model
    has_many :final_first_levels, as: :referenceable, :dependent => :destroy
    has_many :final_second_levels, as: :referenceable, :dependent => :destroy
end

class LevelOneSecondModel
    belongs_to :referenceable, polymorphic: true
    has_many :final_first_levels
end

class LevelTwoSecondModel
    belongs_to :referenceable, polymorphic: true
    has_many :final_first_levels
end


class FinalFirstLevel
     belongs_to :LevelOneSecondModel
end

class FinalSecondLevel
   belongs_to :LevelTwoSecondModel
end

referenceable 用作 parent table 和其他多态关联 (LevelOneSecondModel OR 之间的粘合剂 LevelTwoSecondModel)

注意:
不要忘记在多态关联中使用的 2 children table 的迁移文件中添加以下行。

t.references :referenceable, polymorphic: true, index: true

参考:
http://guides.rubyonrails.org/association_basics.html#polymorphic-associations