在一個控制器中,我得到了一個方法,我想要重構與其他控制器共享。同時,我將它傳遞給回調before_action
。重構和回調
應用程序/模型/ meal_controller.rb
def check_for_user
token = request.headers[:token]
if token.nil?
render json: "Unathorized", status: 401
elsif @meal.user.auth_code != token
render json: "Forbidden", status: 403
end
end
所以我的做法是移動check_for_user
到ApplicationController中,並按如下修改:
def check_for_user(item)
token = request.headers[:token]
if token.nil?
render json: "Unathorized", status: 401
elsif item.user.auth_code != token
render json: "Forbidden", status: 403
end
end
而回MealController,創建其他不帶參數的「虛擬」方法並調用check_for_user。
def check_for_user_meal
check_for_user(@meal)
end
我的問題是:有沒有更好的方式來重構這段代碼?
在此先感謝。
但我需要它只是在控制器,甚至在所有的人。 – tehAnswer
該模塊是要走的路。如果沒有,你可以用它作爲幫手,並將其包含在你感興趣的控制器中。 – Leon