我有一个表格,其中包含来自三个表格的字段,用户可以填写任何字段,他们可以进行搜索。
例如,我有这些表和列
车辆:
- 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它有一个关键字来搜索多个列,但我有多个值来搜索特定的列。
答案 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条件。