2010-11-20 1 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").first вместо Technician.named("john") для получения technician.

+0

Chandra ... спасибо за вашу помощь. Мне потребовалось бы навсегда понять этот нюанс. –

 Смежные вопросы

  • Нет связанных вопросов^_^