目标:我正在尝试设置一个datatable,由ajax datatables支持。为了做到这一点并使给定的列可搜索/排序,我需要在原始查询中提供该列中应该显示的数据
背景:我有类似于下面的activerecord模型设置(只提供重要的部分,我也知道这个设置的部分可以干燥,它不完全是我的应用程序中的设置看起来像什么,它更复杂):
class Invoice < ApplicationRecord
has_many :order_invoices, inverse_of: :invoice
has_many :orders, through: :order_invoices
end
class OrderInvoice < ApplicationRecord
belongs_to :invoice, inverse_of: :order_invoices
belongs_to :order, polymorphic: true, inverse_of: :order_invoices
end
class RegularOrder < ApplicationRecord
has_many :order_invoices, as: :order, inverse_of: :order
has_many :invoices, inverse_of: :orders, through: :order_invoices
# has "uid" attribute
end
class IrregularOrder < ApplicationRecord
has_many :order_invoices, as: :order, inverse_of: :order
has_many :invoices, inverse_of: :orders, through: :order_invoices
# has "uid" attribute
end
问:我需要写一个查询,在哪里加入这些 has_many: :through
多态对象,从 Invoice
水平,并最终能够选择它的 uid
列。如果没有多态关联,它看起来像:
# Assuming the table name would be "orders"
Invoice.joins(order_invoices: :order).select("invoices.*, orders.uid")
但很明显,多态关联无法使用,因为没有一个表可供我参考。
有没有办法用activerecord进行这样的查询?或者我需要一个纯sql解决方案(我想是的)?这样的查询是什么样子的?
暂无答案!
目前还没有任何答案,快来回答吧!