Salve,
Stavo spippolando e mi ero lanciato in una porcheria:
class Antani < ActiveRecord::Base
def id
somethingelse
end
end
Ma scopro con “dispiacere” che qualunque cosa metta dentro quel metodo
lui
continuer sempre a ritornarmi il valore della primary key.
La domanda sbaglio qualcosa o non possibile ridefinire questo metodo?
On Oct 3, 2013, at 11:43 AM, Alessandro C. < [email protected]> wrote:
Ma scopro con “dispiacere” che qualunque cosa metta dentro quel metodo
lui
continuer sempre a ritornarmi il valore della primary key.
La domanda sbaglio qualcosa o non possibile ridefinire questo
metodo?
continuer sempre a ritornarmi il valore della primary key.
La domanda sbaglio qualcosa o non possibile ridefinire questo metodo?
Grazie
sciamp
Ho provato a sperimentare, ma riesco a sovrascriverlo tranquillamente.
L’unica traccia che sono riuscito poi a trovare nel codice ActiveRecord
che potrebbe dare un senso al tuo problema questo:
def instance_method_already_implemented?(method_name)
if dangerous_attribute_method?(method_name)
raise DangerousAttributeError, “#{method_name} is defined by Active
Record”
end
if superclass == Base
super
else
# If B < A and A defines its own attribute method, then we don’t
want to overwrite that.
defined = method_defined_within?(method_name, superclass,
superclass.generated_attribute_methods)
defined && !ActiveRecord::Base.method_defined?(method_name) || super
end
end
############################ fine
Per questo metodo richiamato solo in
activemodel/lib/active_model/attribute_methods.rb, alla riga 293. Quindi
l’ipotesi sta in piedi cos e cos. Ma con tutta la magia su cui si
tiene su ActiveRecord, potrebbe anche essere che in un guazzabuglio di
metaprogrammazione quel metodo venga chiamato.
Tutto il codice tratto dalla versione nel master di github. Non penso
di essere stato eccessivamente utile, per una buona base per
investigare il problema te l’ho data (spero :P).
Ma scopro con “dispiacere” che qualunque cosa metta dentro quel metodo
lui
continuer sempre a ritornarmi il valore della primary key.
La domanda sbaglio qualcosa o non possibile ridefinire questo
metodo?
ID_ATTRIBUTE_METHODS = %w(id id= id? id_before_type_cast).to_set
def instance_method_already_implemented?(method_name)
defined = method_defined_within?(method_name, superclass,
metaprogrammazione quel metodo venga chiamato.
Tutto il codice tratto dalla versione nel master di github. Non penso
di essere stato eccessivamente utile,
per una buona base per
investigare il problema te l’ho data (spero :P).
Grazie, molto utile invece! Avevo provato a leggere del codice, ma data
la
mia niubbitudine galoppante non ero riuscito ad isolare le parti di
codice
interessanti, ci dar un occhio.
Grazie, molto utile invece! Avevo provato a leggere del codice, ma data la
mia niubbitudine galoppante non ero riuscito ad isolare le parti di codice
interessanti, ci dar un occhio.
Grazie ancora
sciamp
Per cercare in maniera efficace nel codice uso ACK oppure AG, che sono
veloci come il vento (ag soprattutto, di diversi ordini di grandezza
rispetto ad ack) e ottimi per la ricerca nel codice.
Per cercare in maniera efficace nel codice uso ACK oppure AG, che sono
veloci come il vento (ag soprattutto, di diversi ordini di grandezza
rispetto ad ack) e ottimi per la ricerca nel codice.