Los carriles: Método Indefinido 'to_sym'
-
20-09-2019 - |
Pregunta
Estoy recibiendo el siguiente error en mis rieles desplegados 2.3.5 aplicación:
NoMethodError (método definido `to_sym' para nil: NilClass):
Mi prueba de instalación local de la aplicación, que utiliza SQLite, no obtener el error, pero mi aplicación desplegado ejecutar MySQL hace. La única otra diferencia entre los dos es que estoy corriendo de Ruby 1.8.7 en mi máquina local y 1.8.6 en mi servidor de implementación.
He incluido el código de User.rb y el registro de errores a continuación. Lo configuran después de la autorización y la declarativa Embedded Railscasts autorización.
Cualquier ayuda sería muy apreciada!
EDIT: Aquí está el código para el application_controller, donde hice current_user usando before_filter:
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.rb:
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
El registro de errores:
NoMethodError (undefined method `to_sym' for 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)
Solución
def role_symbols
[role.to_sym]
end
-> role
es Nil
. Cómo se define role
en alguna parte?
Otros consejos
En algún momento, el código está esperando un objeto de tipo User
, pero es cada vez nil
. ¿Estás haciendo algo como esto?
@user = User.find_by_login("Mary")
@user.role_symbols
Cuando, "María" es un inicio de sesión de usuario inexistente? Publicar ningún lugares donde se está llamando el método role_symbols y podemos ayudar más.
Editar: Mirando el método #roles_for aquí , sin cavar demasiado profundamente en ese plugin, yo diría que #current_user no se establece en este punto de la ejecución de código.
atributo rol no se ha establecido sobre la mesa. Usted tiene que utilizar un código de rescate, e inspeccionar por qué sucede esto.
Comprueba si el valor de 'papel' se setted antes role.to_sym llamada.