enabled_only
コントローラーには、ユーザーを見つけるための 2 つのメソッドがあります (スコープに注意してください)。
before_filter :find_user, :only => :show
before_filter :find_any_user, :only => [:edit, :update, :destroy]
def find_user
@user = User.enabled_only.find(params[:id])
rescue ActiveRecord::RecordNotFound
flash[:alert] = "The user you were looking for could not be found"
redirect_to root_path
end
def find_any_user
@user = User.find(params[:id])
rescue ActiveRecord::RecordNotFound
flash[:alert] = "The user you were looking for could not be found"
redirect_to root_path
end
確かに、これらを 1 つのメソッドにマージして:action == 'show'
、エラーをキャッチするためのレスキューを取得できなかったかどうかを確認できます。次のようなことを試しましたが、うまくいきませんでした。
before_filter :find_user, :only => [:show, :edit, :update, :destroy]
def find_user
@user = if :action == 'show'
User.enabled_only.find(params[:id])
else
User.find(params[:id])
end
rescue ActiveRecord::RecordNotFound
flash[:alert] = "The user you were looking for could not be found"
redirect_to root_path
end
これを行う方法についてアドバイスをお願いします。
ありがとう