Comment peut-Rails alimenter le champ « model_type » pour les associations polymorphes?
-
27-10-2019 - |
Question
J'ai un modèle d'activité. Il belongs_to :parent, :polymorphic => true
.
ne Rails utiliser parent.class.name
, parent.model_name
ou quelque chose d'autre pour remplir le champ de PARENT_TYPE?
Je veux un présentateur à se comporter comme l'objet parent, il enveloppe, et je dois passer outre la bonne méthode.
Merci.
La solution
Je travaille avec Rails 3.0.7 en ce moment et le type polymorphique est défini dans active_record-3.0.7/lib/active_record/association.rb
, ligne 1773.
def create_belongs_to_reflection(association_id, options)
options.assert_valid_keys(valid_keys_for_belongs_to_association)
reflection = create_reflection(:belongs_to, association_id, options, self)
if options[:polymorphic]
reflection.options[:foreign_type] ||= reflection.class_name.underscore + "_type"
end
reflection
end
Alors, on dirait qu'il appelle class_name.underscore
et annexant « _type ». Cela peut être légèrement différent pour rails 3.1, mais cela devrait être un bon point de départ.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow