官术网_书友最值得收藏!

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.

主站蜘蛛池模板: 甘泉县| 顺昌县| 汝城县| 阜康市| 西藏| 河北省| 汽车| 静宁县| 英吉沙县| 塔城市| 山丹县| 安化县| 图们市| 麻阳| 京山县| 云梦县| 文水县| 观塘区| 璧山县| 平安县| 凭祥市| 泰和县| 兰考县| 巴林左旗| 应用必备| 永城市| 库尔勒市| 苏尼特左旗| 永修县| 集贤县| 临颍县| 嘉祥县| 都匀市| 连山| 麦盖提县| 阜康市| 孟村| 秦皇岛市| 乌海市| 鸡西市| 隆德县|