如何在这方面建立联系
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
你好,我是 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