Rails子类方法不会覆盖父类方法

时间:2016-01-31 19:45:24

标签: ruby-on-rails authorization overwrite

favors_controller我有

private
def current_resource
    @favor ||= Favor.find(params[:id]) if params[:id]
  end
end

然后在application_controller我有

 def current_permission
    @current_permission ||= Permission.new(current_user)
  end 

  def current_resource
    nil
  end

  def authorize
    if !current_permission.allow?(params[:controller], params[:action], current_resource)
      redirect_to root_url, alert: "No no no. You can't do that!"
    end
  end

问题是current_resource是零。我尝试将@favor ||= Favor.find(params[:id]) if params[:id]直接放在应用程序控制器中,没有任何改变!您认为这是什么问题?

提前感谢您的时间!

1 个答案:

答案 0 :(得分:2)

问题是params[:id]不是真的,因此@favor ||= Favor.find(params[:id]) if params[:id]语句正在评估nil