rails在多个表中查询

时间:2016-05-04 01:53:36

标签: ruby-on-rails ruby postgresql search

我有一个表格,其中包含来自三个表格的字段,用户可以填写任何字段,他们可以进行搜索。

例如,我有这些表和列

  

车辆:

     
      
  • rego_num
  •   
  • 使
  •   
  • 模型
  •   
  • VIN
  •   
  • engine_num
  •   
  • 传输,......
  •   
     

客户:

     
      
  • 名称
  •   
  •   
  • EMAIL_ADDRESS
  •   
     

地址:

     
      
  • 地址1
  •   
  • 地址2
  •   
  • 地址3
  •   
  • 电话
  •   
  • work_num
  •   
  • primary_num
  •   
  • 传真
  •   
Vehicle belongs_to Customer
Customer has_one address

用户可以在上述任何一个字段中进行搜索,因为他们可以单独输入rego并使用品牌和型号或名称单独或使用手机查找serch或rego,

他们可以输入部分电话号码,它应该找到它,电话是整数列。

我想找到车辆列,如果车辆存在然后找到客户,但问题是他们可以单独进入客户领域。

我想我可以编写联接并执行查询,例如

vehicle.joins(:customer)

但地址与车辆有关,任何人都可以建议我如何将params发送到搜索方法并编写查询来查找记录

我检查了pg_search gem它有一个关键字来搜索多个列,但我有多个值来搜索特定的列。

1 个答案:

答案 0 :(得分:0)

您可以使用ajax调用来发送参数,在控制器中,您需要使用sql创建查询。

例如:

将所有参数变为loacal变量,或者直接使用。

reg_no = params[:reg_no]
make = params[:make]
query = 'where '

if reg_no.present?
 query = query+ "reg_no ilike #{reg_no} AND "
if make.present?
 query = query + "make ilike #{make} AND "

使用“=”是用户输入“整个字符串”,如果它是部分使用“ilike”。

现在你可以使用join并使用where条件。