Rails неопределенный метод, возвращенный через отношение has_many

У меня тут небольшая проблема, которую я не совсем понимаю. Рельсы 3.1.

У меня есть два класса, связанные с отношением has_many Books и Data:

class Book < ActiveRecord::Base
has_many :data, :dependent => :destroy
end

class Datum < ActiveRecord::Base
belongs_to :books

def file_path
    u = @book.path + '/' + self[:name] + '.' + self[:format]
    return u
end
end

Отношения работают правильно, и, на мой взгляд, я могу правильно извлечь атрибуты из класса Datum. С точки зрения:

<% book.data.each do |d| %><%= d.format %><% end %>

Это работает отлично. Но когда я пытаюсь сослаться на метод, который возвращает путь, я получаю неопределенную ошибку метода.

<% book.data.each do |d| %><%= d.file_path %><% end %>

Я явно упускаю что-то очень простое здесь...

2 ответа

Ваш belongs_to отношения не верны. Кроме того, вы не можете получить доступ @book в твоей модели. Ваш Datum модель должна выглядеть так

class Datum < ActiveRecord::Base
  belongs_to :book

  def file_path
    return book.path + '/' + self[:name] + '.' + self[:format]
  end
end

поскольку Datum принадлежит к book, book в Datum Модель будет ссылаться на конкретную книгу, к которой принадлежит данная информация.

Это работает?

def file_path
    u = book.path + '/' + self[:name] + '.' + self[:format]
    return u
end

Обратите внимание, что я использую book вместо @book

Другие вопросы по тегам