【问题标题】:Redmine add new QueryColumn on conditionRedmine 根据条件添加新的 QueryColumn
【发布时间】:2020-11-18 15:33:09
【问题描述】:

我在问题列表中有一个新列,效果很好。

init.rb

require 'redmine'

Redmine::Plugin.register :test do
   # ...
end

Issue.include IssuePatch
IssueQuery.include IssueQueryPatch

issue_query_patch.rb

module IssueQueryPatch
  def self.included(base)    
    base.class_eval do

      # TODO : add restriction
      self.available_columns << QueryColumn.new(
                                  :calcul_something,
                                  :caption => :Something
                                ))
      end
  end
end

issue_patch.rb require_dependency '问题'

module IssuePatch
  def self.included(base)
    def calcul_something
      return some_data
    end
  end
end

我面临的问题是我希望只有一些用户(例如管理员)能够看到 init.rb 中的新列但当前用户尚未加载并且是匿名的所以我无法检查它的状态。

在官方Redmine Github中,可以看到User.current被使用了。

我是否必须让我的补丁模块稍后加载以便加载用户(这怎么可能以及如何做到这一点)还是有什么技巧?

【问题讨论】:

    标签: ruby-on-rails ruby redmine redmine-plugins


    【解决方案1】:

    这可以通过使用before_* 回调before_validation (see ActiveRecord::Callbacks) 来完成。

    喜欢: 我所拥有的是问题列表中的一个新列,效果很好。

    issue_query_patch.rb

    require_dependency 'issue_query'
    
    module IssueQueryPatch
      def self.included(base)
        base.class_eval do
          before_validation :display_test
    
          def display_test
            if User.current.admin? || User.current.allowed_to?(:view_test, nil, :global => true)
              self.available_columns << QueryColumn.new(
                                  :calcul_something,
                                  :caption => :Something
                                ))
            end
          end
        end
      end
    end
    

    view_testinit.rb 中的权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-25
      • 2019-11-01
      • 2020-03-12
      • 2020-06-09
      • 1970-01-01
      • 2021-05-31
      • 2023-02-10
      • 1970-01-01
      相关资源
      最近更新 更多