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