我有以下模特
class A < ActiveRecord::Base
has_many :B
has_many :C, through: :B
end
I am trying to do a ransack search on A
A.ransack(
c_name_in: 'term',
b_name_in: 'another_term'
)
问题是它与表b进行两次左外连接。
这是一个手写的sql来说明这一点
SELECT DISTINCT a.* FROM a
LEFT OUTER JOIN c ON c.a_id = a.id
LEFT OUTER JOIN b ON b.id = c.b_id
LEFT OUTER JOIN c association_c ON association_c.a_id = a.id
WHERE (b.name ILIKE '%term%' AND association_c.name IN ILIKE '%anotherterm%'
任何想法如何解决这个问题?