如何OR&和两个运算符在Rails

时间:2017-03-14 08:10:00

标签: ruby-on-rails

我正在处理搜索SQL我需要OR& AND都在同一个SQL中。

在我的代码之下:

Post.where('category IN (?) OR location IN (?) ', params[:category ], params[:location]) 

两个人:

Post.where('category IN (?) AND location IN (?) ', params[:category ], params[:location]) 

我不仅需要ORAND,因为我的搜索SQL可能一次只能是一个或两个。

我的搜索框分为两部分,一次只能搜索locationcategory&有人用location& category如果我接受OR,则不会搜索两个&我拿AND然后不搜索一个

如果有人帮忙,我真的很感激。

谢谢

1 个答案:

答案 0 :(得分:2)

你可以做这样的事情

@posts = Post.where('true')
@posts = @posts.where(:category => params[:category]) unless params[:category].blank?
@posts = @posts.where(:location => params[:location]) unless params[:location].blank?

Rails具有此功能,您可以将where等链接起来。where将与AND结合使用。因此,此代码将返回所有帖子,或者如果某个类别为所有与该类别相匹配的帖子,或者如果某个位置为所有与该位置匹配的帖子,或者两个类别和位置所有与该类别和该位置相匹配的帖子