如何在ActiveRecord查询下面将其重构为SQL查询?
where(home_team: Team.search(params, %i[name])).
or(where(guest_team: Team.search(params, %i[name])))`
答案 0 :(得分:1)
您可以使用以下内容,
value = Team.search(params, %i[name])
Klass.where('home_team = ? OR guest_team = ?', value, value)
答案 1 :(得分:0)
您可以考虑使用Arel。
where(
%i[home_team guest_team]
.map { |field| <YourClassModel>.arel_table[field]].in(Team.search(params, %i[name])) }
.inject(:or)
<YourClassModel>.arel_table
如果您想提出我的建议,应将这些内容移至其他功能。
另一种方法是使用Merge
并尝试将Team.search
打破到模型范围,并将其与您的where
查询合并。