Pourquoi requête Arel est retourné comme ActiveRecord :: classe Relation au lieu de la classe mère?
-
26-09-2019 - |
Question
J'ai une classe:
class Technician < ActiveRecord::Base
scope :named, lambda {|name| where(["first_name LIKE ?", "%#{name}%"])}
end
Dans la console rails, quand je fais la requête suivante:
technician = Technician.named("john")
technician.class => ActiveRecord::Relation and not Technician
cette question est importante parce que je reçois pas d'erreur de la méthode lorsque je tente d'accéder aux attributs de classe:
technician.id => no method error
ce que je fais mal?
La solution
retourne Arel ActiveRecord::Relation
afin qu'il puisse reporter l'exécution au dernier moment et de mieux composabilité.
Technician.named("john").first
au lieu de Technician.named("john")
pour obtenir le technician
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow