0

Customer という名前のモデルと contact という名前の別のモデルがあります。

連絡先テーブルに顧客 ID を保存しています。

検索方法では、連絡先テーブルと顧客テーブルから値を検索したいと考えています。

私の方法はここにあります: -

class Customer < ActiveRecord::Base>

 def self.search(search)
  if search
    Customer.joins(:contacts).where("customers.company_name ILIKE? OR customers.status ILIKE? OR customers.types ILIKE? OR contacts.name ILIKE? OR contacts.email ILIKE?", "%#{search}%","%#{search}%", "%#{search}%","%#{search}%", "%#{search}%")
  else
    scoped
     end
  end 

終わり

これは機能していますが、その時点で連絡先名が存在しない場合に検索を開始すると、検索されず、もう 1 つの問題は同じ顧客が 2 回表示されることです。

4

1 に答える 1

0

includesの代わりに使用joins

Customer.includes(:contacts).where("customers.company_name ILIKE? OR customers.status ILIKE? OR customers.types ILIKE? OR contacts.name ILIKE? OR contacts.email ILIKE?", "%#{search}%","%#{search}%", "%#{search}%","%#{search}%", "%#{search}%")
于 2013-10-10T09:57:43.180 に答える