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

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.

主站蜘蛛池模板: 云南省| 毕节市| 武夷山市| 蒲城县| 深泽县| 安西县| 潜江市| 德清县| 和平区| 贵定县| 涟水县| 准格尔旗| 军事| 辰溪县| 当涂县| 佛教| 樟树市| 吉安县| 八宿县| 永康市| 南城县| 浏阳市| 温泉县| 东海县| 晋江市| 比如县| 大名县| 莱州市| 洛阳市| 华安县| 峡江县| 赣州市| 两当县| 荃湾区| 永登县| 沾益县| 高州市| 安阳县| 宿州市| 土默特左旗| 滨州市|