在我的数据库中有4个模型
class MasterPayment < ActiveRecord::Base
has_many :payments
end
class Payment < ActiveRecord::Base
belongs_to :master_payment
belongs_to :payable, polymorphic: :true
end
class TreatmentPlan < ActiveRecord::Base
has_many :payments, as: :payable
end
class ArbitraryBillableItem < ActiveRecord::Base
has_many :payments, as: :payable
end
我想要做的是在MasterPayment中建立一个关联,将应付款与主付款相关联。
目前,我能找到的最接近的是如下设置主付款模式
class MasterPayment < ActiveRecord::Base
has_many :payments
has_many :treatment_plans, through: :payments, source: :payable, source_type: "TreatmentPlan"
has_many :arbitrary_billable_items, through: :payments, source: :payable, source_type: "ArbitraryBillableItem"
def payables
self.treatment_plans + self.arbitrary_billable_items
end
end
我遇到的唯一问题是它不像是“正确”的方式。
我可以看到rails没有解决方案的唯一原因是因为你可能必须联合表以在一个sql语句中返回它。
是否有另一种方法可以实现此目的,以便更多地使用活动记录关联?
答案 0 :(得分:0)
这看起来太简单但是有效吗?
def payables
self.payments.joins(:treatment_plans, :arbitrary_billable_items).distinct
end