Redefinición de clases


#1

Bueno a ver si alguien me ayuda porque me da la sensación de que lo
tengo delante y no lo veo.
En un plugin que estoy haciendo necesito redefinir una clase,
concretamente ActiveRecord::ConnectionAdapters::IndexDefinition

La definición actual es

class IndexDefinition < Struct.new(:table, :name, :unique, :columns)
end

y yo quiero redefinirla así

class IndexDefinition < Struct.new(:table, :name, :unique, :columns,
:limits)
end

pruebo lo siguiente:

Object.send(:remove_const, :IndexDefinition)
=> NameError: constant Object::IndexDefinition not defined

Object.send(:remove_const,
“ActiveRecord::ConnectionAdapters::IndexDefinition”)
=> NameError: `ActiveRecord::ConnectionAdapters::IndexDefinition’ is
not allowed as a constant name

Object.send(:remove_const,
:ActiveRecord::ConnectionAdapters::IndexDefinition)
TypeError: ActiveRecord is not a class/module

Dónde estoy metiendo la pata??

Muchas gracias.


#2

2009/5/27 Emili Parreño removed_email_address@domain.invalid:

y yo quiero redefinirla así
=> NameError: `ActiveRecord::ConnectionAdapters::IndexDefinition’ is
not allowed as a constant name

Object.send(:remove_const, :ActiveRecord::ConnectionAdapters::IndexDefinition)
TypeError: ActiveRecord is not a class/module

Dónde estoy metiendo la pata??

Muchas gracias.

Tienes que llamar a remove_const en el módulo en el que está la
constante:

ActiveRecord::ConnectionAdapters.send(:remove_const, :IndexDefinition)

Eso funciona. Suerte.


#3

Ufff, que malo es no dormir, gracias Daniel!!

El día 27 de mayo de 2009 8:20, Daniel R. Troitiño
removed_email_address@domain.invalid escribió:

Object.send(:remove_const, “ActiveRecord::ConnectionAdapters::IndexDefinition”)

Tienes que llamar a remove_const en el módulo en el que está la constante:

ActiveRecord::ConnectionAdapters.send(:remove_const, :IndexDefinition)

Eso funciona. Suerte.


Ror-es mailing list
removed_email_address@domain.invalid
http://lists.simplelogica.net/mailman/listinfo/ror-es