0

コントローラーには次のものがあります。

  @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

重複しないようにこのコードを減らしたいですか?

4

1 に答える 1

0
@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)

スコープを連鎖させるために、すべてを 1 行に入れる必要はありません。上記のコード サンプルのように、 でModel.scope1.scope2実行できます。s = Model.scope1; s = s.scope2

于 2013-04-03T13:47:17.660 に答える