2014-12-19 64 views
0

使用devise,我想在用戶創建後自動設置一個自定義屬性。如何使用devise user_id設置用戶屬性before_create

這是我的用戶模型。

after_save :set_attribute_to_devise_id 

private 

    def set_attribute_to_devise_id 
    self.custom_attribute = self.id 
    end  

當用戶註冊並創建帳戶時,custom_attribute不保存設計生成的ID。但是,在控制檯中進行測試時,對用戶運行User.save似乎會更新custom_attribute,但不會永久保存或保存到數據庫。

我試過after_commit以及after_create沒有任何運氣。如何將用戶創建中的user.id自動保存到另一個屬性列上?

回答

1

回調應該是最大before_save
after_save在所有更改都保存到數據庫中時運行,因此在這種情況下已經太晚了。

+0

謝謝!這可以工作 - 但似乎after_save回調不會自動運行,直到用戶使用設計確認確認帳戶。哪個是好的,但我想知道爲什麼當我在控制檯註冊時創建一個用戶時,該屬性沒有更新。感謝您的幫助! – user3717009

+0

只要驗證通過,就應該始終調用該方法。如果在控制檯中沒有發生,重新啓動控制檯,以便它進行更改。 – Fer