Activerecord 如果属性为null,如何不使用作用域

Activerecord 如果属性为null,如何不使用作用域,activerecord,ruby-on-rails-3.2,dry,Activerecord,Ruby On Rails 3.2,Dry,我的控制器中有以下各项: @filt= params[:filter] || 'no_filter' if params[:subcategory].nil? || params[:subcategory] == "null" @resources = Resource.find_by_category(params[:category]).approved.send(@filt).page(params[:page]).per(30) else @resources = Resou

我的控制器中有以下各项:

  @filt= params[:filter] || 'no_filter'
if params[:subcategory].nil? || params[:subcategory] == "null"
  @resources = Resource.find_by_category(params[:category]).approved.send(@filt).page(params[:page]).per(30)
else
  @resources = Resource.find_by_category(params[:category]).find_by_subcategory(params[:subcategory]).approved.send(@filt).page(params[:page]).per(30)
end
我想减少这个代码,这样我就不会重复

@filt= params[:filter] || 'no_filter'
r = Resource.find_by_category(params[:category])
r = r.find_by_subcategory(params[:subcategory]) unless [nil, 'null'].include? params[:subcategory] 
@resources = r.approved.send(@filt).page(params[:page]).per(30)
您不必将所有内容都放在一行中以链接作用域,如
Model.scope1.scope2
等。。您可以通过
s=Model.scope1;s=s.scope2
,如上面的代码示例所示