当你想要STI但你知道不应该是最好的关系模型吗?

时间:2017-01-30 00:28:03

标签: ruby-on-rails ruby database postgresql activerecord

我希望了解Rails应用程序的最佳关系模型。

听起来单表继承会在某种程度上“起作用”,但当我考虑子模型在“模式”和字段方面的变化时,并不是真的。

情况,我会有很多不同类型的Appraisal,我希望能够灵活地执行Appraisals.first.type = CarAppraisalAppraisals.count = 142之类的内容,count }将是Appraisal的多个不同子模型类的总和(例如,HouseAppraisal,CatAppraisal)。

主模型类型:Appraisal

class Appraisal < Application Record
  has_one :car_appraisals
  has_one :house_appraisals
  has_one :life_appraisals
  #insert other has_one _appraisals I might add in the future
end

儿童模型类型:House Appraisal

class HouseAppraisal < Application Record
  belongs_to :appraisal
end

儿童模型类型:Car Appraisal

class CarAppraisal < Application Record
  belongs_to :appraisal
end

等等

我考虑的内容

  • 我想到了一些我可以利用has_many, through: xxx的东西,但是我无法确定这可能会如何运作?
  • 我知道我把has_one放在了家长评估模型中,这并不完全正确,因为它暗示它会包含其中一个,当事实上它只是其中之一。
  • 为了使事情复杂化,我实际上将Appraisal模型映射到ActiveRecord(Postgres)和映射到MongoId(MongoDB)的子模型(例如PetAppraisal),因为它们的变化很大。架构,但我不认为在整体ERD方面真的应该改变很多。

0 个答案:

没有答案