Rails条件连接和合并方法

时间:2015-10-05 05:47:57

标签: ruby-on-rails join merge

我正在尝试构建我的搜索查询。我的搜索表单有两个字段标记类别

我的查询目前看起来像这样

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

0 个答案:

没有答案