Pourquoi requête Arel est retourné comme ActiveRecord :: classe Relation au lieu de la classe mère?

StackOverflow https://stackoverflow.com/questions/4234144

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?

Était-ce utile?

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
scroll top