关于belong_to,has_one,has_many的困惑

时间:2019-01-13 00:44:19

标签: ruby-on-rails associations

我正在尝试在我的项目中扩展Shift模型的功能。 我有两种类型的班次Ashift和Bshift,它们与Shift直接相关。

我的困惑源于如何在Shift中建立关联。这就是我所拥有的:

我要说的是Shift具有一个或另一个依赖的shift类,但没有两个,也没有。

class Ashift < ApplicationRecord
  belongs_to :shift
end
class Bshift < ApplicationRecord
  belongs_to :shift
end

class Shift < ApplicationRecord
  has_one :ashift
  has_one :bshift
end

我确定association guide中明确列出了这一点,但是我已经阅读了好几次,但我还是很困惑。

has_one或has_many是否引用模型的每个实例或整个Model类?有没有其他更好的方法?

1 个答案:

答案 0 :(得分:1)

使用有一个,STI readmore about this here

class TheShift < ApplicationRecord
  belongs_to :shift
end

class Ashift < TheShift 
end

class Bshift < TheShift 
end

class Shift < ApplicationRecord
  has_one :theshift
end