Ruby on rails Rails:未定义的方法&x27;到"sym"x27 ;;

Ruby on rails Rails:未定义的方法&x27;到"sym"x27 ;;,ruby-on-rails,ruby,roles,declarative-authorization,Ruby On Rails,Ruby,Roles,Declarative Authorization,我在部署的Rails 2.3.5应用程序中遇到以下错误: NoMethodError(未定义的方法“to_sym”表示nil:NilClass): 我的本地测试安装使用Sqlite的应用程序没有收到错误,但我部署的运行Mysql的应用程序收到了错误。两者之间唯一的区别是我在本地机器上运行Ruby 1.8.7,在部署服务器上运行Ruby 1.8.6 我已经包括了User.rb中的代码和下面的错误日志。我是在声明式授权和嵌入式授权Railscasts之后设置的 编辑:这是应用程序\u控制器的代码,

我在部署的Rails 2.3.5应用程序中遇到以下错误:

NoMethodError(未定义的方法“to_sym”表示nil:NilClass):

我的本地测试安装使用Sqlite的应用程序没有收到错误,但我部署的运行Mysql的应用程序收到了错误。两者之间唯一的区别是我在本地机器上运行Ruby 1.8.7,在部署服务器上运行Ruby 1.8.6

我已经包括了
User.rb中的代码和下面的错误日志。我是在声明式授权和嵌入式授权Railscasts之后设置的


编辑:这是
应用程序\u控制器的代码,我在这里使用
过滤器之前设置
当前用户

class ApplicationController < ActionController::Base
  helper :all
  helper_method :current_user_session, :current_user 
  before_filter :set_current_user

  protected 

  def set_current_user
    Authorization.current_user = current_user
  end

  def current_user_session  
    return @current_user_session if defined?(@current_user_session)  
    @current_user_session = UserSession.find  
  end  

  def current_user  
    @current_user = current_user_session && current_user_session.record  
  end
end

在某些情况下,您的代码需要类型为
User
的对象,但得到的却是
nil
。你在做这样的事吗

@user = User.find_by_login("Mary")
@user.role_symbols
其中,“Mary”是不存在的用户登录?在任何你调用角色符号方法的地方发布,我们可以提供更多帮助

编辑:在不深入挖掘插件的情况下,查看“角色”的方法,我会说,“当前用户”在代码执行的这一点上没有设置

  def role_symbols
    [role.to_sym]
  end

->
角色
Nil
。您是否在某处定义了角色?

尚未在表上设置角色属性。您必须使用救援代码,并检查发生这种情况的原因


在调用role.to_sym.

之前,测试是否设置了“role”值。感谢您的回复。我在问题中添加了应用程序控制器的代码,在这里我设置了当前用户。哦,天哪,我看错了。JRL是正确的--
角色
为零。您是否在某处设置了它?用户的角色在用户表中定义,并在用户创建时分配。新用户表单中选择角色的行是:啊,就是这样。在我的测试数据库中,我已经定义了角色,但在我的生产数据库中,我没有。这是导致错误的原因。我为现有用户定义了角色,一切正常。谢谢你给我指明了正确的方向!如果角色为nil,则添加返回空数组的救援代码更安全。
@user = User.find_by_login("Mary")
@user.role_symbols
  def role_symbols
    [role.to_sym]
  end