Q
設計後創建掛鉤
11
A
回答
17
使用由Rails提供的標準after_create
回調。
class User < ActiveRecord::Base
after_create :do_something
def do_something
puts "Doing something"
end
end
4
如果您正在處理您創建的模型的內部狀態,那麼使用回調是完全合法的。
創建User
後,我需要創建默認的Team
。最好避免使用回調來處理其他對象。
「after_ *」回調函數主要用於保存或持久化對象。一旦物體被保存,物體的目的(即責任)就已經實現了,所以我們通常看到的是回傳到其責任區之外,那就是當我們遇到問題時。
在這種情況下,最好是行爲控制器,在那裏你可以成爲一個更清潔的解決方案直接添加你的功能,或delegate to a service上:
# shell
rails g devise:controllers users
# config/routes.rb
devise_for :users, controllers: { registrations: "users/registrations" }
# app/controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
after_action :create_default_team, only: :create
private
def create_default_team
Team.create_default(@user) if @user.persisted?
end
end
6
我使用Rails 4設計3.5 confirmable
,由於各種驚喜,不得不這樣做。
class User < ActiveRecord::Base
# don't use after_create, see https://github.com/plataformatec/devise/issues/2615
after_commit :do_something, on: :create
private
def do_something
# don't do self.save, see http://stackoverflow.com/questions/22567358/
self.update_column(:my_column, "foo")
end
end
相關問題
- 1. 創建後掛鉤
- 2. DRY FactoryGirl後創建/建立掛鉤
- 3. 導軌設計掛鉤on_login
- 4. 掛鉤wcf服務創建
- 5. PR_Write掛鉤後
- 6. 創建方法的操作掛鉤或遠程掛鉤
- 7. 掛鉤或監控服務創建
- 8. 如何掛鉤MFC CWnd創建
- 9. prePersist創建文章時掛鉤
- 10. 在woocommerce上創建掛鉤,找到hook_names
- 11. 在SQLAlchemy中創建掛鉤實體
- 12. 使用掛鉤和SQLAlchemy創建表格
- 13. 掛鉤創建c語言庫
- 14. 創建掛鉤失敗:無效標頭
- 15. 如何創建掛鉤目錄
- 16. VUE計算:從創建生命週期掛鉤
- 17. 掛鉤或不掛鉤 - git
- 18. API無掛鉤掛鉤
- 19. 什麼鉤掛鉤創建自定義帖子類型?
- 20. Git CHMOD後接收掛鉤
- 21. Elastic MapReduce的後掛鉤
- 22. 在moodle註冊掛鉤後
- 23. 掛鉤過程最後
- 24. Subversion提交後掛鉤
- 25. SVN更新後掛鉤?
- 26. WordPress的掛鉤:後加載
- 27. 成功安裝後掛鉤
- 28. 設置預掛鉤jshint
- 29. gdb掛鉤設置中斷
- 30. 掛鉤Eclipse構建過程?
我該如何使用它來訪問用戶?例如我想給用戶一個使用Royce的默認角色,所以它只是'@ user',所以我可以做'@user.add_role:user' – Un3qual
@Un3qual' self' –
謝謝!我現在覺得很蠢。 – Un3qual