Complexe SQL 查询和分页
Complexe SQL query and pagination
我有这些表
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
invoice/credit 款
belongs_to :client
has_many :payments, as: :payable
一个client
可以有多个payments
:
- 直接付款
- 付款给客户文件(invoices/credits)
我的问题是如何在 active_relation
对象中获取客户付款(直接 和 通过文档),所以我可以对结果进行分页吗?
如果您不想听取我在问题下的评论中提出的建议,您可以自己编写 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
我有这些表
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
invoice/credit 款
belongs_to :client
has_many :payments, as: :payable
一个client
可以有多个payments
:
- 直接付款
- 付款给客户文件(invoices/credits)
我的问题是如何在 active_relation
对象中获取客户付款(直接 和 通过文档),所以我可以对结果进行分页吗?
如果您不想听取我在问题下的评论中提出的建议,您可以自己编写 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