假设我有
ModelA < ActiveRecord::Base
has_many :modelb
end
ModelB < ActiveRecord::Base
has_many :modelc
belongs_to :modela
end
Modelc < ActiveRecord::Base
has_many :modeld
belongs_to :modelb
end
Modeld < ActiveRecord::Base
belongs_to :modelc
end
我希望能够写
modeld.modela
最好的方法是什么?
答案 0 :(得分:2)
您可以使用has_one :through
设置链(您可以使用modela.modelds
类似地实施has_many :through
)
Modeld < ActiveRecord::Base
belongs_to :modelc
has_one :modelb, through: :modelc
has_one :modela, through: :modelb
end
答案 1 :(得分:1)
你试过代表团吗?
delegate :modelb, to: :modelc
delegate :modela, to: :modelb
答案 2 :(得分:0)
最简单的方法是在模型modela
中定义方法Modeld
。
Modeld < ActiveRecord::Base
belongs_to :modelc
def modela
self.modelc.try(:modelb).try(:modela)
end
end