我正在处理搜索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])
我不仅需要OR
还AND
,因为我的搜索SQL可能一次只能是一个或两个。
我的搜索框分为两部分,一次只能搜索location
或category
&有人用location
& category
如果我接受OR
,则不会搜索两个&我拿AND
然后不搜索一个
如果有人帮忙,我真的很感激。
谢谢
答案 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
结合使用。因此,此代码将返回所有帖子,或者如果某个类别为所有与该类别相匹配的帖子,或者如果某个位置为所有与该位置匹配的帖子,或者两个类别和位置所有与该类别和该位置相匹配的帖子