使用 Rails 3.2。我正在尝试通过检查用户对所有 crud 操作的权限来保护我的应用程序。以下是其中一个示例:
class StatesController < ApplicationController
def create
@country = Country.find(params[:country_id])
if can_edit(@country)
@state.save
else
redirect_to country_path
end
end
def destroy
@country = Country.find(params[:country_id])
if can_edit(@country)
@state = State.find(params[:id])
@state.destroy
else
redirect_to country_path
end
end
end
class ApplicationController < ActionController::Base
def is_owner?(object)
current_user == object.user
end
def can_edit?(object)
if logged_in?
is_owner?(object) || current_user.admin?
end
end
end
我注意到我一直在包装can_edit?
许多控制器。有没有 DRYer 方法可以做到这一点?
注意:所有必须包含一个对象来检查登录用户是否是所有者。