Plutôt qu'une syntaxe acts_as_foo
**, je suis en train de jouer avec l'idée d'étendre ActiveSensor::Base < ActiveRecord::Base
puis d'étendre cette classe de base avec toutes les méthodes d'erreurs/validations/class/whizbangs.Avantages/inconvénients d'une classe :: Base (plutôt que acts_as_foo)
proposé: # gem active_sensor.rb
module ActiveSensor
include ActiveRecord
autoload :VERSION, 'active_sensor/version'
autoload :ActiveSensorError, 'active_sensor/base'
autoload :Base, 'active_sensor/base'
autoload :Validations, 'active_sensor/validations'
end
Plus: Je pense qu'il semble plus propre. L'architecture et l'accumulation de classes émulent ActiveRecord J'ai beaucoup de sous-classes ... je veux vérifier si un composant est matériel en utilisant la méthode :is_a?
.
Moins: tenant une couche de classe d'héritage supplémentaire dans la mémoire ... jamais utilisé indépendamment pas très classiques (vu seulement 1 autres rails plug-in de le faire)
Un conseil? La création d'une nouvelle classe :: Base est-elle simplement stupide? Si oui, pourquoi?
** Le motif acts_as_foo
est commun pour les gemmes Rails. Cette méthode de classe est ajoutée à chaque objet AR, qui charge et étend les méthodes de classe et d'instance lors du chargement de la classe.