到目前为止,我收到了我在Rails中看到的最奇怪的错误。在我看来,如果我直接找到记录,我可以打印出与绘画相关的电子邮件(例如Painting.find(15)。但是如果我尝试使用实例变量它会出错(例如@painting)。
视图/绘画/ show.html.erb
<%= Painting.find(15).artist.user.email %> # works
<%= @painting.artist.user.email %> # Error: "undefined method 'user' for nil:NilClass"
控制器/ paintings_controller.rb
def show
@painting = Painting.find(15)
end
模特:“用户”,“艺术家”,“绘画”。
用户可以是艺术家。那么user has_one artist
。
artist has_many paintings
。
答案 0 :(得分:1)
我认为你应该添加关联。这应该是这样的:
class User < ActiveRecord::Base
has_one :artist # it's ok
end
class Artist < ActiveRecord::Base
belongs_to :user # add this
has_many :paintings
end
class Painting < ActiveRecord::Base
belongs_to :artist
end
对我来说,这两种情况都适用于这种关联。
答案 1 :(得分:0)
使用
def show
@painting = Painting.find(15).last
end
目前第二个是返回1个元素数组,但是为了调用依赖方法,你必须指定1个项目。