我有关联
交付模式
class Delivery < ActiveRecord::Base
belongs_to :schedule, inverse_of: :deliveries
accepts_nested_attributes_for :schedule
end
进度模型
class Schedule < ActiveRecord::Base
has_many :deliveries, inverse_of: :schedule
include PushUpdates
def offer
deliveries.last.try(:offer)
end
end
推送更新:应用程序/模型/关注/push_updates.rb
module PushUpdates
extend ActiveSupport::Concern
included do
after_create {update_client_store :create unless Rails.env.test? }
after_update {update_client_store :update unless Rails.env.test? }
end
def update_client_store(operation)
...
self.offer
end
end
现在,在保存交货的同时,我也接受一组时间表详细信息。
当它保存交付和计划时,after_create
计划模型调用回调,当它试图找出deliveries.last
时,它会给出nil
值。由于我接受它作为嵌套属性的一部分,那么交付对象应该可用于它,但它仍然提供nil
值。
我在这里错过了什么吗?谢谢。
,Rails正在尝试在提交相关记录之前进行数据库调用。
还有一个额外的回调,您可以查看after_commit
(代替记录提交到您正在使用的任何数据库后触发的after_create
。
这应该意味着您的deliveries.last
应该返回非空。您也可以使用 self.reload
强制对模型进行数据库查找,尽管这可能会导致意外行为。