我在部署的Rails 2.3.5应用程序中遇到以下错误:
NoMethodError(未定义方法“to_sym”对于nil:NilClass):
我的本地测试应用程序安装使用的是Sqlite,没有出现错误,但是我的部署应用程序运行Mysql时出现了错误。两者之间唯一的区别是我的本地机器上运行Ruby 1.8.7,而部署服务器上运行1.8.6。
I ve 包括以下代码:User.rb
和错误标识。 我是继申报性授权和假装授权铁路预报之后设立的。
编辑:这是application_controller
的代码,我在其中使用before_filter
设置current_user
:
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
把这个翻译成中文:--
用户b:
class User < ActiveRecord::Base
acts_as_authentic
has_many :products
has_many :transactions
ROLES = %w[admin dmstaff staff faculty]
def role_symbols
[role.to_sym]
end
end
错误日志:
NoMethodError(未定义方法“to_sym”对于nil:NilClass):
app/models/user.rb:10:in `role_symbols
/usr/lib/ruby/gems/1.8/gems/declarative_authorization 0.4/lib/declarative_authorization/authorization.rb:242:in `roles_for
/usr/lib/ruby/gems/1.8/gems/declarative_authorization-0.4/lib/declarative_authorization/authorization.rb:296:in `user_roles_privleges_from_options
/usr/lib/ruby/gems/1.8/gems/declarative_authorization-0.4/lib/declarative_authorization/authorization.rb:161:in `permit!
/usr/lib/ruby/gems/1.8/gems/declarative_authorization-0.4/lib/declarative_authorization/in_controller.rb:580:in `permit!
/usr/lib/ruby/gems/1.8/gems/declarative_authorization-0.4/lib/declarative_authorization/in_controller.rb:109:in `filter_access_filter
/usr/lib/ruby/gems/1.8/gems/declarative_authorization-0.4/lib/declarative_authorization/in_controller.rb:109:in `each
/usr/lib/ruby/gems/1.8/gems/declarative_authorization-0.4/lib/declarative_authorization/in_controller.rb:109:in `all?
/usr/lib/ruby/gems/1.8/gems/declarative_authorization-0.4/lib/declarative_authorization/in_controller.rb:109:in `filter_access_filter
passenger (2.2.5) lib/phusion_passenger/rack/request_handler.rb:95:in `process_request
passenger (2.2.5) lib/phusion_passenger/abstract_request_handler.rb:207:in `main_loop
passenger (2.2.5) lib/phusion_passenger/railz/application_spawner.rb:378:in `start_request_handler
passenger (2.2.5) lib/phusion_passenger/railz/application_spawner.rb:336:in `handle_spawn_application
passenger (2.2.5) lib/phusion_passenger/utils.rb:183:in `safe_fork
passenger (2.2.5) lib/phusion_passenger/railz/application_spawner.rb:334:in `handle_spawn_application
passenger (2.2.5) lib/phusion_passenger/abstract_server.rb:352:in `__send__
passenger (2.2.5) lib/phusion_passenger/abstract_server.rb:352:in `main_loop
passenger (2.2.5) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously
passenger (2.2.5) lib/phusion_passenger/abstract_server.rb:163:in `start
passenger (2.2.5) lib/phusion_passenger/railz/application_spawner.rb:213:in `start
passenger (2.2.5) lib/phusion_passenger/spawn_manager.rb:262:in `spawn_rails_application
passenger (2.2.5) lib/phusion_passenger/abstract_server_collection.rb:126:in `lookup_or_add
passenger (2.2.5) lib/phusion_passenger/spawn_manager.rb:256:in `spawn_rails_application
passenger (2.2.5) lib/phusion_passenger/abstract_server_collection.rb:80:in `synchronize
passenger (2.2.5) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize
passenger (2.2.5) lib/phusion_passenger/spawn_manager.rb:255:in `spawn_rails_application
passenger (2.2.5) lib/phusion_passenger/spawn_manager.rb:154:in `spawn_application
passenger (2.2.5) lib/phusion_passenger/spawn_manager.rb:287:in `handle_spawn_application
passenger (2.2.5) lib/phusion_passenger/abstract_server.rb:352:in `__send__
passenger (2.2.5) lib/phusion_passenger/abstract_server.rb:352:in `main_loop
passenger (2.2.5) lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously
Rendering /var/data/app/current/public/500.html (500 Internal Server Error)