通过has_many关系返回的Rails未定义方法

时间:2012-07-19 08:07:17

标签: ruby-on-rails undefined has-many

我在这里遇到一些问题,我不太明白。 Rails 3.1。

我有两个与has_many关系书和数据链接的类:

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 个答案:

答案 0 :(得分:0)

这有用吗?

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

请注意,我使用book代替@book

答案 1 :(得分:0)

您的belongs_to关系不正确。此外,您无法访问模型中的@book。您的Datum模型应该看起来像

class Datum < ActiveRecord::Base
  belongs_to :book

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

由于Datum属于bookbook模型中的Datum将引用此数据所属的特定图书。