好的,偶然發現了這個奇怪現象。我在我的用戶模型中有這個。在兩個活動記錄回調中更新記錄
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
我收到一個錯誤,並且記錄根本沒有保存。將self.save!
放在assign_role中不會改變任何內容,所以問題肯定是第二個.save
。
你有什麼模型驗證? – Rose
我正在用':validatable'選項使用設計。除此之外沒有什麼所以基本的電子郵件和密碼驗證 – redFur