Ruby on rails RubyonRails-Redmine插件
我正在寻找帮助,以进一步配置Redmine插件。Redhopper插件还可以,但它显示了所有与Sprint是否已经关闭无关的问题。我已经在谷歌上搜索过了,但没有找到任何信息 我把类的代码放在我认为应该配置的地方Ruby on rails RubyonRails-Redmine插件,ruby-on-rails,ruby,redmine,Ruby On Rails,Ruby,Redmine,我正在寻找帮助,以进一步配置Redmine插件。Redhopper插件还可以,但它显示了所有与Sprint是否已经关闭无关的问题。我已经在谷歌上搜索过了,但没有找到任何信息 我把类的代码放在我认为应该配置的地方 有一个名为versions的表,其中有一列status和3个选项(打开、阻止、关闭) 在表issues中有一列fixed\u version\u id,其中包含versions\u id 看板应仅显示version.status=open的问题 如果你需要额外的信息,一定要告诉我 提
- 有一个名为
的表,其中有一列versions
和3个选项(打开、阻止、关闭)status
- 在表
中有一列issues
,其中包含fixed\u version\u id
versions\u id
- 看板应仅显示
的问题version.status=open
class KanbanBoard
attr_reader :columns
def initialize project
@project = project
@columns_by_status = {}
@columns = statuses.map do |status|
@columns_by_status[status] = Column.new status
end
project_issues = issues
RedhopperIssue.ordered.each do |redhopper_issue|
issue = redhopper_issue.issue
if project_issues.include?(issue)
column_for_issue_status(issue.status) << redhopper_issue
project_issues.delete issue
end
end
project_issues.each do |issue|
column_for_issue_status(issue.status) << RedhopperIssue.new(issue: issue)
end
end
private
def column_for_issue_status status
@columns_by_status[status]
end
def issues
project_issues = Issue.visible(User.current, :project => @project)
project_issues = project_issues.open if Feature.enabled("only_open_statuses")
project_issues = project_issues.where(tracker_id: tracker_ids)
project_issues.to_a
end
def tracker_ids
trackers_to_remove = (Setting.plugin_redhopper && Setting.plugin_redhopper["hidden_tracker_ids"] || []).map(&:to_i)
@project.trackers.map(&:id) - trackers_to_remove
end
def statuses
result = IssueStatus.sorted
result = result.where(is_closed: false) if Feature.enabled("only_open_statuses")
necessary_statuses = []
WorkflowTransition.where(:tracker_id => tracker_ids, :role_id => Role.all.map(&:id)).each do |transition|
necessary_statuses << transition.old_status
necessary_statuses << transition.new_status
end
result & necessary_statuses.uniq
end
end
问题
模型中有什么?您所需要做的就是更新issues
方法,在模型上链接一个额外的过滤器。如果你遵循这一点,你会发现将你的代码与其他人的代码集成起来要容易得多。谢谢你的回答。代码不是我写的。它属于一个叫做Redhopper的插件。我在我的问题中添加了问题模型中的代码。啊,好的,我现在明白了。我对源代码做了一些深入的研究,长话短说,看起来您只需要启用Feature.enabled(“仅打开状态”)
。你已经这样做了吗(或者你不知道怎么做了吗?)请注意,这还包括阻止的
问题以及打开的
,但我认为这样更好。提供几个参考链接,以防有人想在我没有发布完整答案的情况下提前研究这个问题(尚未):以及
class RedhopperIssue < ActiveRecord::Base
unloadable
resort!
belongs_to :issue
attr_accessible :issue
validates :issue, uniqueness: true
def blocked_with_comment?
blocked?
end
def blockers
issue.relations_to.select {|ir| ir.relation_type == IssueRelation::TYPE_BLOCKS && ir.other_issue(issue).visible?}.map { |ir| ir.issue_from }
end
def blocked_with_issues?
blockers.present?
end
def blocked_issues
issue.relations_from.select {|ir| ir.relation_type == IssueRelation::TYPE_BLOCKS && ir.other_issue(issue).visible?}.map { |ir| ir.issue_to }
end
def blocking_issue?
blocked_issues.present?
end
def comments
# Some issue updates set notes to nil or "" hence the inline SQL :(
issue.journals.visible.where("LENGTH(journals.notes) > 0")
end
def sortable?
persisted?
end
def due_delta
issue.due_before ? DueDeltaPresenter.new(issue.due_before) : nil
end
# Presenter
def highlight_class
blocked_with_issues? ? 'highlight_warning' : blocking_issue? || blocked_with_comment? ? 'highlight_danger' : ''
end
def tracker_color
"##{Digest::SHA1.hexdigest(issue.tracker.id.to_s)[0..5]}"
end
end
def issues
project_issues = Issue.visible(User.current, :project => @project)
project_issues = project_issues.open if Feature.enabled("only_open_statuses")
project_issues = project_issues.where(tracker_id: tracker_ids)
project_issues = project_versions.where(status: 'open')
project_issues.to_a
end