我有以下代码:
class User < ActiveRecord::Base
has_many :orders
end
class Order < ActiveRecord::Base
belongs_to :user
after_create :alert_another_order_created
def alert_another_order_created
return if user.orders.count > 1
puts "More code here"
end
end
在另一个地方,我将其称为以下事项:
User.find_or_create_by_email('user@email.com').orders.find_or_create_by_product('bleh')
它适用于我的本地环境和测试。但是在生产环境中,我一直遇到以下异常:
undefined method `orders' for nil:NilClass
例外是指订单#alert_another_order_created(return
行)
任何想法我做错了什么?
谢谢!
答案 0 :(得分:1)
您的Order
记录没有关联user
,因此在这种情况下Order#user
会返回nil
。如果您需要与用户关联的每个订单,您可以验证用户的存在:
class Order < ActiveRecord::Base
belongs_to :user
validates_presence_of :user
# ...
end