子记录通过after_create中的父记录访问其他子记录

时间:2014-08-06 09:01:20

标签: ruby-on-rails activerecord

我有以下代码:

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行)

任何想法我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

您的Order记录没有关联user,因此在这种情况下Order#user会返回nil。如果您需要与用户关联的每个订单,您可以验证用户的存在:

class Order < ActiveRecord::Base
  belongs_to :user
  validates_presence_of :user
  # ...
end