2010-11-20 7 views
1

私はクラスを持っている:レールコンソールでなぜARelクエリが親クラスの代わりにActiveRecord :: Relationクラスとして返されるのですか?

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

、私は次のクエリを実行するとき:

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

この問題、私はクラスの属性にアクセスしようとすると、私はメソッドのエラーを取得していないので:

technician.id => no method error 

私は間違っていますか?

答えて

4

ArelはActiveRecord::Relationを返すので、実行を最後の瞬間まで延期し、より良い合成性を提供することができます。

Technician.named("john").firstTechnician.named("john")の代わりにtechnicianを取得する。

+0

チャンドラ...助けてくれてありがとう。そのニュアンスを自分自身を永遠に理解するためには、私はいつまでも取っていただろう。 –

関連する問題