2010-11-26 5 views
1

J'essaie de mettre à jour mon application de Rails 2.3.5 à Rails 3.0.3.rails2 à rails3 problème de mise à niveau

Modèles:
Project.rb

has_many :project_roles, :dependent => :destroy 
alias :roles :project_roles 
after_create :create_cal_for_project, :make_project_owner 

def create_calendar_for_project 
    self.calendars.create(:name => "default") 
end 

def make_project_owner 
    #Make owner of project when created 
    self.roles.create(:user => User.curr_user, :name => 'O') 
end 

ProjectRole.rb

belongs_to :project 
belongs_to :user 

colonnes de table project_roles sont user_id, project_id, nom
Je reçois du mal avec l'erreur suivante, veuillez suggérer.

Merci.

→ rails c 
> Loading development environment (Rails 3.0.3) 

ruby-1.9.2-p0> User.curr_user = User.first 

=> #<User id: 1, username: "tispratik", login_email: "[email protected]", > is_email_verified: nil, crypted_password: "deed6fa27ffefa57e63592a9b59295abf2660447cf281f34857...", password_salt: "YsD2nLte3pZy1FZ78GD", persistence_token: "84e44908be77b2dc1e41f8dfeacf9ef20c30050ff0c53854e0d...", single_access_token: "cp1bqVSheDh7vl9J48V", perishable_token: "6pGPzdw48nJnJAHsIZQW", last_login_ip: nil, last_login_at: nil, created_at: "2010-11-23 06:00:09", updated_at: "2010-11-23 06:00:09"> 

ruby-1.9.2-p0> p = Project.create(:name => "ad", :description => "add") 
NoMethodError: undefined method `name' for nil:NilClass 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.3/lib/active_support/whiny_nil.rb:48:in `method_missing' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/arel-2.0.4/lib/arel/visitors/to_sql.rb:57:in `block in visit_Arel_Nodes_InsertStatement' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/arel-2.0.4/lib/arel/visitors/to_sql.rb:56:in `map' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/arel-2.0.4/lib/arel/visitors/to_sql.rb:56:in `visit_Arel_Nodes_InsertStatement' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/arel-2.0.4/lib/arel/visitors/visitor.rb:15:in `visit' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/arel-2.0.4/lib/arel/visitors/visitor.rb:5:in `accept' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/arel-2.0.4/lib/arel/visitors/to_sql.rb:19:in `block in accept' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:110:in `with_connection' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/arel-2.0.4/lib/arel/visitors/to_sql.rb:17:in `accept' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/arel-2.0.4/lib/arel/tree_manager.rb:19:in `to_sql' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/arel-2.0.4/lib/arel/select_manager.rb:191:in `insert' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/relation.rb:14:in `insert' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/persistence.rb:270:in `create' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/timestamp.rb:47:in `create' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/callbacks.rb:281:in `block in create' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.3/lib/active_support/callbacks.rb:413:in `_run_create_callbacks' 
... 30 levels... 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/attribute_methods/dirty.rb:21:in `save' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/transactions.rb:237:in `block (2 levels) in save' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/transactions.rb:289:in `block in with_transaction_returning_status' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/database_statements.rb:139:in `transaction' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/transactions.rb:204:in `transaction' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/transactions.rb:287:in `with_transaction_returning_status' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/transactions.rb:237:in `block in save' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/transactions.rb:248:in `rollback_active_record_state!' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/transactions.rb:236:in `save' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/activerecord-3.0.3/lib/active_record/base.rb:498:in `create' 
from (irb):2 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.3/lib/rails/commands/console.rb:44:in `start' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.3/lib/rails/commands/console.rb:8:in `start' 
from /home/pratik/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.3/lib/rails/commands.rb:23:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

Le problème est dans le rappel make_project_owner. create_calendar_for_project fonctionne très bien.

J'ai changé make_project_owner en suivant le même problème.

def make_project_owner 
    #Make owner of project when created 
    #role.create(:user => User.curr_user, :name => 'O') 
    ProjectRole.create(:user => User.curr_user, :project => self, :name => "O") 
end 

J'ai essayé de rétrograder rails:
rails 3.0.2 -> a même problème
rails 3.0.1 -> a différentes erreurs

undefined method `name' for #<Arel::Value:0x00000005795090> 
Application Trace | Framework Trace | Full Trace 

arel (1.0.1) lib/arel/engines/sql/engine.rb:26:in `block in create' 
arel (1.0.1) lib/arel/engines/sql/engine.rb:26:in `each' 
arel (1.0.1) lib/arel/engines/sql/engine.rb:26:in `detect' 
arel (1.0.1) lib/arel/engines/sql/engine.rb:26:in `create' 
arel (1.0.1) lib/arel/algebra/relations/writes.rb:24:in `call' 
arel (1.0.1) lib/arel/session.rb:17:in `create' 
arel (1.0.1) lib/arel/algebra/relations/relation.rb:159:in `insert' 
activerecord (3.0.1) lib/active_record/relation.rb:14:in `insert' 
activerecord (3.0.1) lib/active_record/persistence.rb:271:in `create' 
activerecord (3.0.1) lib/active_record/timestamp.rb:47:in `create' 
activerecord (3.0.1) lib/active_record/callbacks.rb:281:in `block in create' 
activesupport (3.0.1) lib/active_support/callbacks.rb:413:in `_run_create_callbacks' 
activerecord (3.0.1) lib/active_record/callbacks.rb:281:in `create' 
activerecord (3.0.1) lib/active_record/persistence.rb:247:in `create_or_update' 
activerecord (3.0.1) lib/active_record/callbacks.rb:277:in `block in create_or_update' 
activesupport (3.0.1) lib/active_support/callbacks.rb:423:in `_run_save_callbacks' 
activerecord (3.0.1) lib/active_record/callbacks.rb:277:in `create_or_update' 
activerecord (3.0.1) lib/active_record/persistence.rb:39:in `save' 
activerecord (3.0.1) lib/active_record/validations.rb:43:in `save' 
activerecord (3.0.1) lib/active_record/attribute_methods/dirty.rb:21:in `save' 
activerecord (3.0.1) lib/active_record/transactions.rb:237:in `block (2 levels) in save' 
activerecord (3.0.1) lib/active_record/transactions.rb:289:in `block in  with_transaction_returning_status' 
activerecord (3.0.1) lib/active_record/connection_adapters/abstract/database_statements.rb:139:in `transaction' 
activerecord (3.0.1) lib/active_record/transactions.rb:204:in `transaction' 
activerecord (3.0.1) lib/active_record/transactions.rb:287:in `with_transaction_returning_status' 
activerecord (3.0.1) lib/active_record/transactions.rb:237:in `block in save' 
activerecord (3.0.1) lib/active_record/transactions.rb:248:in `rollback_active_record_state!' 
activerecord (3.0.1) lib/active_record/transactions.rb:236:in `save' 
activerecord (3.0.1) lib/active_record/base.rb:498:in `create' 
app/models/project.rb:70:in `make_project_owner' 
activesupport (3.0.1) lib/active_support/callbacks.rb:463:in `_run_create_callbacks' 
activerecord (3.0.1) lib/active_record/callbacks.rb:281:in `create' 
activerecord (3.0.1) lib/active_record/persistence.rb:247:in `create_or_update' 
activerecord (3.0.1) lib/active_record/callbacks.rb:277:in `block in create_or_update' 
activesupport (3.0.1) lib/active_support/callbacks.rb:428:in `_run_save_callbacks' 
activerecord (3.0.1) lib/active_record/callbacks.rb:277:in `create_or_update' 
activerecord (3.0.1) lib/active_record/persistence.rb:39:in `save' 
activerecord (3.0.1) lib/active_record/validations.rb:43:in `save' 
activerecord (3.0.1) lib/active_record/attribute_methods/dirty.rb:21:in `save' 
activerecord (3.0.1) lib/active_record/transactions.rb:237:in `block (2 levels) in save' 
activerecord (3.0.1) lib/active_record/transactions.rb:289:in `block in with_transaction_returning_status' 
activerecord (3.0.1) lib/active_record/connection_adapters/abstract/database_statements.rb:139:in `transaction' 
activerecord (3.0.1) lib/active_record/transactions.rb:204:in `transaction' 
activerecord (3.0.1) lib/active_record/transactions.rb:287:in `with_transaction_returning_status' 
activerecord (3.0.1) lib/active_record/transactions.rb:237:in `block in save' 
activerecord (3.0.1) lib/active_record/transactions.rb:248:in `rollback_active_record_state!' 
activerecord (3.0.1) lib/active_record/transactions.rb:236:in `save' 
app/controllers/projects_controller.rb:34:in `create' 
actionpack (3.0.1) lib/action_controller/metal/implicit_render.rb:4:in `send_action' 
actionpack (3.0.1) lib/abstract_controller/base.rb:150:in `process_action' 
actionpack (3.0.1) lib/action_controller/metal/rendering.rb:11:in `process_action' 
actionpack (3.0.1) lib/abstract_controller/callbacks.rb:18:in `block in process_action' 
activesupport (3.0.1) lib/active_support/callbacks.rb:460:in `_run__2176748434120211400__process_action__1031157339911956458__callbacks' 
activesupport (3.0.1) lib/active_support/callbacks.rb:409:in `_run_process_action_callbacks' 
activesupport (3.0.1) lib/active_support/callbacks.rb:93:in `run_callbacks' 
actionpack (3.0.1) lib/abstract_controller/callbacks.rb:17:in `process_action' 
actionpack (3.0.1) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action' 
activesupport (3.0.1) lib/active_support/notifications.rb:52:in `block in instrument' 
activesupport (3.0.1) lib/active_support/notifications/instrumenter.rb:21:in `instrument' 
activesupport (3.0.1) lib/active_support/notifications.rb:52:in `instrument' 
actionpack (3.0.1) lib/action_controller/metal/instrumentation.rb:29:in `process_action' 
actionpack (3.0.1) lib/action_controller/metal/rescue.rb:17:in `process_action' 
actionpack (3.0.1) lib/abstract_controller/base.rb:119:in `process' 
actionpack (3.0.1) lib/abstract_controller/rendering.rb:40:in `process' 
actionpack (3.0.1) lib/action_controller/metal.rb:133:in `dispatch' 
actionpack (3.0.1) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' 
actionpack (3.0.1) lib/action_controller/metal.rb:173:in `block in action' 
actionpack (3.0.1) lib/action_dispatch/routing/route_set.rb:62:in `call' 
actionpack (3.0.1) lib/action_dispatch/routing/route_set.rb:62:in `dispatch' 
actionpack (3.0.1) lib/action_dispatch/routing/route_set.rb:27:in `call' 
rack-mount (0.6.13) lib/rack/mount/route_set.rb:148:in `block in call' 
rack-mount (0.6.13) lib/rack/mount/code_generation.rb:93:in `block in recognize' 
rack-mount (0.6.13) lib/rack/mount/code_generation.rb:75:in `optimized_each' 
rack-mount (0.6.13) lib/rack/mount/code_generation.rb:92:in `recognize' 
rack-mount (0.6.13) lib/rack/mount/route_set.rb:139:in `call' 
actionpack (3.0.1) lib/action_dispatch/routing/route_set.rb:492:in `call' 
haml (3.0.24) lib/sass/plugin/rack.rb:41:in `call' 
actionpack (3.0.1) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' 
actionpack (3.0.1) lib/action_dispatch/middleware/head.rb:14:in `call' 
rack (1.2.1) lib/rack/methodoverride.rb:24:in `call' 
actionpack (3.0.1) lib/action_dispatch/middleware/params_parser.rb:21:in `call' 
actionpack (3.0.1) lib/action_dispatch/middleware/flash.rb:182:in `call' 
actionpack (3.0.1) lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call' 
actionpack (3.0.1) lib/action_dispatch/middleware/cookies.rb:287:in `call' 
activerecord (3.0.1) lib/active_record/query_cache.rb:32:in `block in call' 
activerecord (3.0.1) lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache' 
activerecord (3.0.1) lib/active_record/query_cache.rb:12:in `cache' 
activerecord (3.0.1) lib/active_record/query_cache.rb:31:in `call' 
activerecord (3.0.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `call' 
actionpack (3.0.1) lib/action_dispatch/middleware/callbacks.rb:46:in `block in call' 
activesupport (3.0.1) lib/active_support/callbacks.rb:415:in `_run_call_callbacks' 
actionpack (3.0.1) lib/action_dispatch/middleware/callbacks.rb:44:in `call' 
rack (1.2.1) lib/rack/sendfile.rb:107:in `call' 
actionpack (3.0.1) lib/action_dispatch/middleware/remote_ip.rb:48:in `call' 
actionpack (3.0.1) lib/action_dispatch/middleware/show_exceptions.rb:46:in `call' 
railties (3.0.1) lib/rails/rack/logger.rb:13:in `call' 
rack (1.2.1) lib/rack/runtime.rb:17:in `call' 
activesupport (3.0.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call' 
rack (1.2.1) lib/rack/lock.rb:11:in `block in call' 
<internal:prelude>:10:in `synchronize' 
rack (1.2.1) lib/rack/lock.rb:11:in `call' 
actionpack (3.0.1) lib/action_dispatch/middleware/static.rb:30:in `call' 
railties (3.0.1) lib/rails/application.rb:168:in `call' 
railties (3.0.1) lib/rails/application.rb:77:in `method_missing' 
railties (3.0.1) lib/rails/rack/log_tailer.rb:14:in `call' 
rack (1.2.1) lib/rack/content_length.rb:13:in `call' 
rack (1.2.1) lib/rack/handler/webrick.rb:52:in `service' 
/home/pratik/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service' 
/home/pratik/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run' 
/home/pratik/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread' 
+1

Veuillez essayer de mettre en forme de meilleure qualité. – rwilliams

+0

Je ne peux pas lire ce message d'erreur brouillé, mais il est probablement évident que l'un de vos callback ': after_create' provoque l'erreur. Essayez de les désactiver tous les deux, puis chacun à son tour, cela devrait vous rapprocher de trouver une cause (je suppose que les noms de rappel incompatibles est juste une erreur d'édition). – nathanvda

+0

Mis à jour le format pour regarder un peu mieux. Toujours dosent look aussi joli :(En outre, j'ai trouvé que le problème est dans make_project_owner callback et a également essayé le changement ci-dessus, toujours la même erreur –

Répondre

0

J'ai eu un problème similaire, mais j'ai pu résoudre ce avec le code suivant:

module Connection 
class DB1 < ActiveRecord::Base 
    self.abstract_class = true 

    establish_connection(Rails.env) 
end 

class DB2 < ActiveRecord::Base 
    self.abstract_class = true 

    establish_connection("#{Rails.env}_db2") 
end 
end 

class Project < Connection::DB1 

Peut-être que cela a fonctionné pour moi à cause des usages de establish_connection dans tous les modèles.

0

Je n'ai pas le temps de le tester donc je ne peux pas dire à coup sûr, mais cette ligne me semble suspect:

self.calendars.create(:name => "default") 

Je pense que ce devrait être comme ceci:

Calendar.create(:name => "default", :project_id => self.id) 
+0

Le problème est dans le callback make_project_owner –

+0

Je suppose que c'est parce que Vous appelez ProjectRole.create. Essayez d'appeler Role.create – sosborn

+0

Since Role est juste un alias de ProjectRole, il ne me permet pas de l'utiliser.Constante non initialisée Projet :: Rôle –

Questions connexes