Ruby on rails 3.2 在RubyonRails中基于参数动态创建查询搜索请求

Ruby on rails 3.2 在RubyonRails中基于参数动态创建查询搜索请求,ruby-on-rails-3.2,Ruby On Rails 3.2,以下是我对搜索页面的一些请求 /articles?tag=tag1&author=author1 /articles?title=title1&tag=tag1 /articles?title=title1&tag=tag1&author=author1 /articles?tag=tag1 /articles?title=title1&tag=tag1&author=author1&size=medium&is_deprecate

以下是我对搜索页面的一些请求

/articles?tag=tag1&author=author1
/articles?title=title1&tag=tag1
/articles?title=title1&tag=tag1&author=author1
/articles?tag=tag1
/articles?title=title1&tag=tag1&author=author1&size=medium&is_deprecated=false&has_fotos=true
那么,根据查询向
文章
模型发出请求的最有效方式是什么?我不想做这样的事

@articles = Article.all
@articles = Article.find_by_tag(params[:tag]) if params[:tag]
@articles = Article.where("title like ?", params[:title]) if params[:title]
@articles = Article.find_by_author(params[:author]) if params[:author]
@articles = Article.find_by_is_deprecated(params[:is_deprecated]) if params[:is_deprecated]
#...etc

您的想法?

无需每次执行sql查询。。。使用ruby方式。 您可以使用以下方法

@articles = Article.all

@articles.select!{ |article| article.tag==params[:tag] } if params[:tag].present?

@articles.select!{ |article| article.title==params[:title]} if params[:title].present?

@articles.select!{ |article| article.author==params[:author]} if params[:author].present?

@articles.select!{ |article| article.is_deprecated==params[:is_deprecated]} if params[:is_deprecated].present?

它是2009年写的,现在已经弃用了。