Подтвердить что ты не робот

Получение метода 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
4b9b3361

Ответ 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) обеспечит возврат только одного объекта.