如何从两个表中搜索

时间:2013-10-10 09:46:29

标签: ruby-on-rails postgresql

我有一个名为Customer的模型和另一个名称为contact的模型。

我正在联系人表格中保存客户ID。

在搜索方法中,我想从联系人表和客户表中搜索值。

我的方法在这里: -

class Customer< ActiveRecord的::基地>

 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 个答案:

答案 0 :(得分: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}%")