Rails 4 - 未定义的方法 - 可能是一个简单的答案

时间:2014-01-31 04:17:43

标签: ruby-on-rails ruby-on-rails-4 nomethoderror

我认为这可能很容易解决,我只是不确定该怎么做。

我有以下内容:

用户模型

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控制台中没有问题。

关于这里发生了什么以及我需要改变什么的任何想法?

非常感谢!

2 个答案:

答案 0 :(得分:1)

如果Event.user_id为nil,则会出现此错误,这意味着没有用户分配给该事件。

答案 1 :(得分:0)

:event_creator => self.user.full_name