#ruby-on-rails #ruby #redmine #redmine-plugins
#ruby-on-rails #ruby #redmine #redmine-плагины
Вопрос:
У меня есть новый столбец в списке проблем, который работает очень хорошо.
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
используется.
Должен ли я создавать свои модули исправлений для последующей загрузки, чтобы пользователь был загружен (как это вообще возможно и как это сделать) или есть хитрость?
Ответ №1:
Это можно сделать с помощью before_*
обратного before_validation
вызова (см. 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_test
находится разрешение в init.rb.