我认为这可能很容易解决,我只是不确定该怎么做。
我有以下内容:
用户模型
class User < ActiveRecord::Base
has_many :events
def full_name
[first_name, last_name].join(" ")
end
end
活动模型
class Event < ActiveRecord::Base
belongs_to :user
def as_json(options = {})
{
:id => self.id,
:title => self.name,
:location => self.location,
:start => start_time.rfc822,
:end => end_time.rfc822,
:event_creator => user.full_name #this is what is causing the problem
}
end
end
运行查询时出现以下错误:
NoMethodError in CalendarController#index
undefined method `full_name' for nil:NilClass
但是,当我在Rails控制台中时,如果我运行该方法:
irb>> Event.find(1).as_json
irb>> => {:id=>1, :title=>"Your title", :location=>"Bermuda", :start=>"Sun, 05 Jan 2014 02:50:07 +0000", :end=>"Sun, 05 Jan 2014 02:51:46 +0000", :event_creator=>"John Smith"}
如您所见,“event_creator”在Rails控制台中没有问题。
关于这里发生了什么以及我需要改变什么的任何想法?
非常感谢!
答案 0 :(得分:1)
如果Event.user_id
为nil,则会出现此错误,这意味着没有用户分配给该事件。
答案 1 :(得分:0)
:event_creator => self.user.full_name