Nan*_*usa 0 ruby ruby-on-rails cancan
我在我的rails应用程序中使用Cancan + Devise:
当我尝试更新评论记录时,问题就出现了,我想初始化方法的用户参数总是即将到来,nil即使我已记录:
Ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
unless user.nil?
if user.role.name == "admin"
can :manage, :all
elsif user.role.name == "atendimento"
can :manage, Comment
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
Better_errors

最后它引发了这个错误.

每个人都面临这个问题?有人可以帮帮我吗?
Rails 3.2.8设计2.1.0 CanCan 1.6.9 Ruby 1.9.3p385
编辑1
CommentsController.rb
class CommentsController < ApplicationController
authorize_resource :only => [:index, :show,:new,:edit, :create,:update,:destroy, :approve, :moderate, :disapprove]
layout "admin"
Run Code Online (Sandbox Code Playgroud)
编辑2
嘿伙计们,CanCan在控制器收到ajax请求时工作得很好.
Comments.js
var request = $.ajax({
url: url_to_request,
type: "PUT",
data: {id : id_to_send, answer : answer_to_send, question : question_to_send },
dataType: "json"
});
Run Code Online (Sandbox Code Playgroud)
配置/ routes.rb中
resources :comments do
member do
put 'approve'
put 'moderate'
put 'disapprove'
end
end
Run Code Online (Sandbox Code Playgroud)
小智 5
它不是user零,它是user.role.
您可以使用user.role.try(:name)或确保该role方法始终返回响应的对象name.
编辑
Cancan current_user在控制器上使用该方法.如果该方法返回nil,则用户将在您的Ability文件中为nil.
确保Devise before_filter在过滤器之前运行在Cancan之前(如调用load_and_authorize_resource).如果您的用户在Cancan开始尝试授权之前未经过身份验证,则您的用户将为零.
| 归档时间: |
|
| 查看次数: |
807 次 |
| 最近记录: |