0
我真的很高兴使用此查询搜索表单。然而,只是发现,这是不正常工作。 失败位是.where
其中like
对params[:query]
。这like
对4个不同的领域发生4次。但是,结果表明这不会发生。Rails 3.2 - OR查询无法正常工作 - 重写查询
@events_casual = Event.non_timetable.where("events.finish_date >= ?", @time).where((["CAST(headers.title_es as varchar(255)) LIKE ?", "%#{params[:query]}%"] || ["CAST(headers.title_en as varchar(255)) LIKE ?", "%#{params[:query]}%"] || ["CAST(headers.title_eu as varchar(255)) LIKE ?", "%#{params[:query]}%"] || ["CAST(headers.title_fr as varchar(255)) LIKE ?", "%#{params[:query]}%"])).includes(:header).order("events.start_date ASC")
我一直在尝试此查询转换为:
@events_casual = Event.non_timetable.joins(:header).where(" params[:query] in (?)", [headers.title_es, headers.title_en, headers.title_eu]).order("events.start_date ASC")
但是,这是行不通的。 Error: undefined method
title_es'{}:哈希'
我试过类似的语法。但无济于事。
任何帮助重写该查询非常赞赏。由于
它似乎工作得很好。非常感谢。任何想法为什么我的第一个查询没有按预期工作? –
我很确定在你的查询中使用'||'不会转化为'OR'时AR转换代码为sql。 :) – jvnill