Supposons une association polymorphe, par exemple 'business' et 'staff', les deux étant 'hourable' (ce qui signifie qu'ils ont des heures qui leur sont assignées). Quelle est l'approche recommandée pour que le modèle 'hour' applique les mêmes méthodes aux heures d'un objet métier ou d'un objet personnel?Partage du modèle pour les associations polymorphes
Pour un exemple simple, le modèle « heures » peut contenir:
def self.find_hours_for_id(id)
Business.find(id).hours
end
Cependant, je souhaite effectuer cette même méthode sur un membre du personnel, auquel cas la même méthode serait plutôt appeler l'équivalent de
Staff.find(id).hours
Est-il bon ou mauvais formulaire pour définir le nom du modèle dans la classe de modèle de base:
class BusinessHour < Hour
@mymodel = "Business"
end
class Hour < ActiveRecord::Base
def self.find_hours_for_id(id)
@mymodel.constantize.find(id).hours
end
end
Ensuite, à partir du contrôleur, appelez:
BusinessHour.find_hours_for_id(id)
est-il une meilleure solution?
Merci! Diriez-vous que c'est mieux que ce que j'ai fait? Est-ce que ma solution serait acceptable aussi? Juste curieux. – 99miles
votre solution est acceptable. C'est juste une façon différente de faire. Et ma solution fonctionne mieux si vous avez un héritage "multiple" – shingara