Мне нужно решить конкретную проблему для Redmine, но я новичок в Ruby и Ruby on Rails в частности.Redmine User project priority plugin
так что мне нужно.
У меня есть разработчики в Redmine. Для каждого разработчика (= пользователь) мне нужно показать (на странице Домашняя страница и MyPage) приоритеты проектов для этого пользователя, определенные кем-то. Например:
Jhon:
---
1. Project1
2. Project2
...
Mary:
---
1. Project2
2. Project23
3. Project1
...
The solution i see is the following (assuming plugin is called
UserProjectPrios
).
Модель. Создание таблицы user_project_prios
:
- user_id (FK: пользователь)
- project_id (Ф.К.: проект)
- ПРИО (интермедиат)
Создание модели (может выглядеть бесполезным, только начиная с RnR :)
class UserProjectPrio < ActiveRecord::Base
belongs_to :user
belongs_to :project
attr_reader :project, :prio
def initialize (project_id, prio)
@project = Project.find(project_id)
@prio = prio
end
def self.get_user_projects(user_id)
user_project_prios = []
self.find_by_user_id(user_id).each do |up|
user_project_prios.push(self.new(up.project_id, up.prio, up.enum_issueprio_position))
end
user_project_prios
end
end
Контроллер. Я знаю, что для домашней страницы я могу использовать крючки. например
class Hooks < Redmine::Hook::ViewListener
def view_welcome_index_left (context = {})
context[:user_name] = User.current.name;
context[:user_project_prios] = UserProjectPrio.get_user_projects(???user_id???);
context[:controller].send(:render_to_string, {
:partial => "hooks/user_project_prios/user_project_prios",
:locals => context
})
end
end
Теперь проблема здесь user_id. Пользователь класса в Redmine, похоже, не раскрывает его идентификатор для публики. Итак, как мне найти UserProjectPrios
? Для вашего пользователя?
Или я действительно ошибаюсь ...?
Ну, я был не прав в этом идентификаторе пользователя IS. Просто User.current.id. Но главный вопрос остается: есть ли лучшее решение? –