我需要为 Redmine 解决一个特定问题,但我是 Ruby 和 Ruby on Rails 的新手。
所以我需要什么。
我在 Redmine 中有一些开发人员。对于每个开发人员(=用户),我需要显示(在主页和 MyPage 上)某人指定的该用户的项目优先级。例如:
Jhon:
---
1. Project1
2. Project2
...
Mary:
---
1. Project2
2. Project23
3. Project1
...
我看到的解决方案如下(假设插件被调用UserProjectPrios
)。
模型。创建一个表user_project_prios
:
- user_id (fk: 用户)
- project_id (fk: 项目)
- 普里奥 (int)
创建一个模型(可能看起来很垃圾,只是从 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 中的 Class User 似乎没有公开它的 id。那么我如何找到UserProjectPrios
当前用户的?
还是我真的走错路了...?