Possible en double:
Rails - Cannot dup NilClass when using Single Table InheritanceImpossible dup NilClass lors de la création d'un modèle enfant à l'aide unique Héritage de Table
Salut les gars,
J'utilise Rails 2.3.8 et Ruby 1.8.7 sous Windows (oui je sais que je devrais utiliser linux ... je n'ai pas le temps de le faire maintenant = P)
J'essaie de faire un simple modèle d'IST.
Où j'ai un utilisateur de classe et 1 sous-classe (BusinessContact) héritant de l'utilisateur.
Je peux appeler User.new, User.create et il ne s'enregistré dans le DB, mais lorsque je tente BusinessContact.new ou .Create je reçois:
can't dup NilClass
D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2219:in `dup'
D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2219:in `scoped_methods'
D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2223:in `current_scoped_methods'
D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2206:in `scoped?'
D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2474:in `send'
D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2474:in `initialize'
D:/Users/Administrator/Projects/Addcamon/src/app/controllers/debug_controller.rb:3:in `new'
D:/Users/Administrator/Projects/Addcamon/src/app/controllers/debug_controller.rb:3:in `index'
La migration de l'utilisateur est créé comme suit :
# Create Users Table
create_table :users do |t|
t.string :type
# common attributes
t.string :login, :limit => 40
t.string :identity_url
t.string :name, :limit => 100, :default => '', :null => true
t.string :email, :limit => 100
t.string :crypted_password, :limit => 40
t.string :salt, :limit => 40
t.string :remember_token, :limit => 40
t.string :activation_code, :limit => 40
t.string :state, :null => :false, :default => 'passive'
t.datetime :remember_token_expires_at
t.string :password_reset_code, :default => nil
t.datetime :activated_at
t.datetime :deleted_at
t.timestamps
end
Et mes modèles sont définis comme ceci:
class User < ActiveRecord::Base
unloadable #I've added this cause I read somewhere it could fix the problem, but it didn't
include Authentication
include Authentication::ByPassword
include Authentication::ByCookieToken
include Authorization::AasmRoles
# Validations
validates_presence_of :login, :if => :not_using_openid?
validates_length_of :login, :within => 3..40, :if => :not_using_openid?
validates_uniqueness_of :login, :case_sensitive => false, :if => :not_using_openid?
validates_format_of :login, :with => RE_LOGIN_OK, :message => MSG_LOGIN_BAD, :if => :not_using_openid?
validates_format_of :name, :with => RE_NAME_OK, :message => MSG_NAME_BAD, :allow_nil => true
validates_length_of :name, :maximum => 100
validates_presence_of :email, :if => :not_using_openid?
validates_length_of :email, :within => 6..100, :if => :not_using_openid?
validates_uniqueness_of :email, :case_sensitive => false, :if => :not_using_openid?
validates_format_of :email, :with => RE_EMAIL_OK, :message => MSG_EMAIL_BAD, :if => :not_using_openid?
validates_uniqueness_of :identity_url, :unless => :not_using_openid?
validate :normalize_identity_url
end
class BusinessContact < User
end
I'v e déjà essayé la solution unloadable je l'ai vu quelque part
J'ai essayé via la console de rails, pas de chance non plus:
user = BusinessContact.new
TypeError: can't dup NilClass
from D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2219:in `dup'
from D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2219:in `scoped_methods'
from D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2223:in `current_scoped_methods'
from D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2206:in `scoped?'
from D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2474:in `send'
from D:/Ruby187/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:2474:in `initialize'
from (irb):9:in `new'
from (irb):9
Il semble que quelqu'un ait posté deux fois la même question, deux utilisateurs différents ... [Rails - Impossible de dupliquer NilClass lors de l'utilisation de Single Table Inheritance] (http://stackoverflow.com/questions/3971496/rails-cannot- dup-nilclass-when-using-single-table-inheritance) –
C'est mon utilisateur de coworker, je ne savais pas qu'il allait demander ici. Si c'est un problème, supprimez l'une des questions. – emzero