Почему запрос ARel возвращается как класс ActiveRecord :: Relation вместо родительского класса? - PullRequest
1 голос
/ 20 ноября 2010

У меня есть класс:

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

В консоли rails, когда я делаю следующий запрос:

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

это важно, потому что я получаю ошибку метода, когда пытаюсь получить доступ к атрибутам класса:

technician.id => no method error  

что я делаю не так?

1 Ответ

4 голосов
/ 20 ноября 2010

Arel возвращает ActiveRecord::Relation, чтобы он мог отложить выполнение до последнего момента и обеспечить лучшую компоновку.

Technician.named("john").first вместо Technician.named("john") для получения technician.

...