Получение метода undefined для ActiveRecord:: Relation
У меня есть следующие модели
class Book < ActiveRecord::Base
has_many :chapters
end
и
class Chapter < ActiveRecord::Base
belongs_to :book
end
in /chapters/edit/id
Я получаю
undefined method `book' for #<ActiveRecord::Relation:0x0000010378d5d0>
когда я пытаюсь получить доступ к такой книге
@chapter.book
Ответы
Ответ 1
Похоже, что @chapter - это не один объект главы. Если @chapter инициализируется примерно так:
@chapter = Chapter.where(:id => params[:id])
то вы получите объект Relation (который можно рассматривать как коллекцию, но не один объект). Чтобы исправить это, вам нужно извлечь запись с помощью find_by_id
или взять первый из коллекции
@chapter = Chapter.where(:id => params[:id]).first
или
@chapter = Chapter.find_by_id(params[:id])
Ответ 2
Попробуйте: Chapter.find(params[:id]).first
Ответ 3
Как говорили другие, добавление метода .first
разрешит это. Я столкнулся с этой проблемой при вызове @chapter по этому уникальному идентификатору. Добавление .first
(или .take
в Rails 4) обеспечит возврат только одного объекта.