Forum: Rails-ES Redefinición de clases

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Emili P. (Guest)
on 2009-05-27 10:11
(Received via mailing list)
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.
--
Daniel R. Troitiño (Guest)
on 2009-05-27 10:21
(Received via mailing list)
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.
Emili P. (Guest)
on 2009-05-27 11:12
(Received via mailing list)
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
>



--
This topic is locked and can not be replied to.