通过协会和协会的Ransack

时间:2015-10-12 03:30:57

标签: ruby-on-rails ransack

我有以下模特

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%'

任何想法如何解决这个问题?

0 个答案:

没有答案