ransacker

Userにないカラムのsearchをransackerでカスタマイズ
Settings.target_user_idsに該当するmedical_idを持っているuserだけを対象にする(scope利用)
 
models
scope :ms_users, ->(v=true){
  if v && Settings.target_user_ids.present? 
    where("medical_id IN (?)", Settings.target_user_ids.split(/\s*,\s*/).map(&:to_i)) 
  end 
} 

ransacker :ms_users, 
  :formatter => proc {|v| 
    ms_users(v=='true').map{|m|m.medical_id}.uniq 
  }, :splat_param => true do |parent|
    parent.table[:medical_id] 
  end

 
#use
User.search(ms_users_in: true)
User.search(ms_users_in: false) 

grouping
 
q = MedicalUser.search
params = {m: 'or', logs_created_at_gt: '2013-01-01 00:00:00' ,logs_created_at_lt: '2013-03-01 23:59:59' }
q.build_grouping params
q.result.to_sql