J'ai le code suivant et essayé toute la journée pour refactoriser les méthodes de classe à un module sperate pour partager la fonctionnalité avec toutes mes classes de modèle.ruby / datamapper: Méthodes de classe Refactor au module
Code (http://pastie.org/974847):
class Merchant
include DataMapper::Resource
property :id, Serial
[...]
class << self
@allowed_properties = [:id,:vendor_id, :identifier]
alias_method :old_get, :get
def get *args
[...]
end
def first_or_create_or_update attr_hash
[...]
end
end
end
Je voudrais archiver quelque chose comme:
class Merchant
include DataMapper::Resource
include MyClassFunctions
[...]
end
module MyClassFunctions
def get [...]
def first_or_create_or_update[...]
end
=> Merchant.allowed_properties = [:id]
=> Merchant.get(:id=> 1)
Mais malheureusement, mes compétences en rubis sont mauvais. J'ai lu beaucoup de choses (par exemple here) et maintenant je suis encore plus confus. Je suis tombé sur les deux points suivants:
alias_method
échouera, car il défini dynamiquement dans le moduleDataMapper::Resource
.- Comment obtenir une méthode de classe
allowed_properties
en raison notamment d'un module?
Quelle est la voie à suivre?
Merci beaucoup à l'avance.