我正在尝试构建我的搜索查询。我的搜索表单有两个字段标记和类别
我的查询目前看起来像这样
Video.joins(:tags, :categories).merge(Tag.where(:id => params[:tags])).merge(Category.where(:id => params[:category])).pluck(:id)
但有时用户不使用类别或标签,在这种情况下,我的查询无效。
如何设置条件以使查询仅合并可用属性?
当前代码
if params.has_key?(:category) && params.has_key?(:tags)
@videos = RedtubeVideo.joins(:redtube_tags, :redtube_categories).merge(RedtubeTag.where(:id => params[:tags])).merge(RedtubeCategory.where(:id => params[:category])).pluck(:id)
elsif params.has_key?(:category)
@videos = RedtubeVideo.joins(:redtube_categories).merge(RedtubeCategory.where(:id => params[:category])).pluck(:id)
elsif params.has_key?(:tags)
@videos = RedtubeVideo.joins(:redtube_tags).merge(RedtubeTag.where(:id => params[:tags]))
end