Ruby on rails RubyonRails-Redmine插件

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的问题 如果你需要额外的信息,一定要告诉我 提

我正在寻找帮助,以进一步配置Redmine插件。Redhopper插件还可以,但它显示了所有与Sprint是否已经关闭无关的问题。我已经在谷歌上搜索过了,但没有找到任何信息

我把类的代码放在我认为应该配置的地方

  • 有一个名为
    versions
    的表,其中有一列
    status
    和3个选项(打开、阻止、关闭)
  • 在表
    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