2010-11-20 10 views
1

Ich habe eine Klasse:Warum wird die ARel-Abfrage als ActiveRecord :: Relation-Klasse anstelle der übergeordneten Klasse zurückgegeben?

class Technician < ActiveRecord::Base 
    scope :named, lambda {|name| where(["first_name LIKE ?", "%#{name}%"])} 
end 

In Schienen Konsole, wenn ich die folgende Abfrage tun:

technician = Technician.named("john") 
technician.class => ActiveRecord::Relation and not Technician 

dies wichtig ist, weil ich einen kein Verfahren Fehler, wenn ich versuche, die Klasse für den Zugriff auf Attribute:

technician.id => no method error 

was mache ich falsch?

Antwort

4

Arel gibt ActiveRecord::Relation zurück, so dass es die Ausführung auf den letzten Moment verschieben kann und eine bessere Kompositionsfähigkeit bietet.

Technician.named("john").first anstelle von Technician.named("john"), um die technician zu erhalten.

+0

Chandra ... danke für deine Hilfe. Es würde mich ewig brauchen, um diese Nuance selbst herauszufinden. –

Verwandte Themen