好吧,偶然发现了这个奇怪的东西。我的用户模型中有这个。
after_create :assign_role, :subscribe_to_basic_plan
def assign_role
self.role = 1
self.save
end
def subscribe_to_basic_plan
self.customer_id = "hello"
self.save
end
(出于说明目的简化了代码)
当我创建我的用户并在控制台中检查它时,我得到role: 1, customer_id: nil
. 但是!,如果我从第一个回调中删除保存一切正常。
after_create :assign_role, :subscribe_to_basic_plan
def assign_role
self.role = 1
end
def subscribe_to_basic_plan
self.customer_id = "hello"
self.save
end
产生role: 1, customer_id: "hello"
. 所以似乎它只读取.save
回调中的第一个。我想了解确切的行为是什么以及为什么。我花了很多时间试图查明这一点,并且不想再次偶然发现类似的东西。
编辑:
也许这很有帮助。当我使用 self.save 时!在subscribe_to_basic_plan
我得到一个错误,记录根本没有保存。放入assign_roleself.save!
不会改变任何东西,所以问题肯定出在第二个.save
.