我有这些表
clients
----------
-id
-full_name
payments invoices
------------- ----------
-id -id
-payable_id -client_id
-payable_type
credits
----------
-id
-client_id
由这些模型支持:
belongs_to :payable, polymorphic: true
has_many :invoices
has_many :credits
has_many :payments, as: :payable
belongs_to :client
has_many :payments, as: :payable
client
可以有多个payments
:
我的问题是如何在active_relation
对象中获取客户付款(直接和通过文档),以便我可以对结果进行分页?
答案 0 :(得分:1)
如果您不想根据我在评论中的建议中提出建议,您可以编写自己的SQL来精确检索所需的记录:
class Payment
def self.of_client(client)
where(<<-SQL
(payable_type = 'client' AND payable_id = ?) OR
(payable_type = 'invoice' AND payable_id IN
(SELECT id FROM invoices WHERE client_id = ?))
SQL, client.id, client.id)
end
end