- Redmine Plugin Extension and Development
- Alex Bevilacqua
- 146字
- 2021-07-16 12:20:25
Model hooks
These hooks are used even less frequently than controller hooks but are being included here for completeness.
Model extension is better handled through the use of new methods or encapsulation of existing methods by means of the alias_method_chain
pattern. For a summary of alias_method_chain
see http://stackoverflow.com/a/3697391.
A common use-case for model hooks is the :model_project_copy_before_save
hook as this can be used to replicate content from our plugin that belonged to a specific project if that project is copied:
module RedmineKnowledgebase class Hooks < Redmine::Hook::ViewListener def model_project_copy_before_save(context = {}) source = context[:source_project] destination = context[:destination_project] if source.module_enabled?(:redmine_knowledgebase) # TODO: clone all categories # TODO: clone all articles # TODO: ensure cloned articles refer to cloned categories end end end end
The actual implementation has been left out in the preceding snippet, but placeholders have been left intact to illustrate what actions we could be taking.
推薦閱讀
- iOS Game Programming Cookbook
- Learn TypeScript 3 by Building Web Applications
- Learning NServiceBus(Second Edition)
- Python編程自學手冊
- Kotlin Standard Library Cookbook
- C++程序設計基礎教程
- Expert Android Programming
- PHP+MySQL網站開發項目式教程
- C語言課程設計
- 從零開始學C語言
- Java EE核心技術與應用
- SQL Server實用教程(SQL Server 2008版)
- OpenStack Networking Essentials
- SciPy Recipes
- 深入理解Java虛擬機:JVM高級特性與最佳實踐