【问题标题】:rails where query in multiple tablerails where 在多个表中查询
【发布时间】:2016-05-04 01:53:35
【问题描述】:

我有一个表单,其中包含大约三个表的字段,用户可以填写任何字段并进行搜索。

例如我有这些表和列

车辆:

  • rego_num
  • 制作
  • 型号
  • vin
  • engine_num
  • 传输,...

客户:

  • 姓名
  • 电子邮件地址

地址:

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

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

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

本来想找车辆一栏,如果有车辆再找客户,但问题是他们可以单独输入客户字段。

我想我可以写一个连接并做一个 where 查询,比如

vehicle.joins(:customer)

但地址与车辆有关,谁能建议我如何将参数发送到搜索方法并编写查询以查找记录

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

【问题讨论】:

标签: ruby-on-rails ruby postgresql search


【解决方案1】:

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

例如:

将所有参数放入本地变量中,也可以直接使用。

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 条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2018-06-29
    • 2014-12-13
    • 2018-05-26
    • 2017-03-18
    • 1970-01-01
    • 2021-07-02
    相关资源
    最近更新 更多