NoMethodError: неопределенный метод `create_at 'для в Rails - PullRequest
1 голос
/ 11 июля 2011

Итак, вот объект, который я извлек из ActiveRecord other = [#<Referrer id: 16, name: "Other", published: true, created_at: "2011-07-11 16:22:00", updated_at: "2011-07-11 16:22:00">] Почему я не могу сделать other.created_at, пока я могу сделать other.name?

Вот модель:

class Referrer < ActiveRecord::Base
end

Ошибка, которую я получаю:

NoMethodError: undefined method `created_at' for #<ActiveRecord::Relation:0x1035763c8>

Что я пропустил?

1 Ответ

7 голосов
/ 11 июля 2011

Если вы заметите, other на самом деле ActiveRecord::Relation, что в основном означает, что он действует как массив Referrer объектов. Так что вы не можете просто позвонить created_at на это. Вы можете вызвать other.first.created_at или, если вам нужен массив created_at дат, вы можете сделать other.map(&:created_at).

Причина, по которой вы можете позвонить other.name, заключается в том, что ActiveRecord::Relation отвечает на имя. Но это метод name, отличный от name в вашей модели Referrer. other.name должен вернуть "Referrer" вместо "Other" верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...