新規にissueを作るときにチケットのIDは予測できないようなので、新規チケットに対して子チケットを付けるのは無理ぽそうだけど、既存のチケットの変更はこれで行けた。
--- importer_controller.rb.old 2011-10-17 19:46:24.000000000 +0900 +++ importer_controller.rb 2012-03-28 14:55:50.253440900 +0900 @@ -15,7 +15,7 @@ ISSUE_ATTRS = [:id, :subject, :assigned_to, :fixed_version, :author, :description, :category, :priority, :tracker, :status, - :start_date, :due_date, :done_ratio, :estimated_hours] + :parent_issue_id, :start_date, :due_date, :done_ratio, :estimated_hours] def index unless defined? FasterCSV @@ -153,7 +153,8 @@ category = IssueCategory.find_by_project_id_and_name(project.id, category_name) assigned_to = User.find_by_login(row[attrs_map["assigned_to"]]) fixed_version = Version.find_by_name(row[attrs_map["fixed_version"]]) - + parent_issue_id = row[attrs_map["parent_issue_id"]] + # new issue or find exists one issue = Issue.new journal = nil @@ -179,7 +180,7 @@ query.add_filter("status_id", "*", [1]) query.add_filter(unique_attr, "=", [row[unique_field]]) - issues = Issue.find :all, :conditions => query.statement, :limit => 2, :include => [ :assigned_to, :status, :tracker, :project, :priority, :category, :fixed_version ] + issues = Issue.find :all, :conditions => query.statement, :limit => 2, :include => [ :assigned_to, :status, :tracker, :project, :priority, :category, :fixed_version, :parent_issue_id ] end if issues.size > 1 @@ -243,6 +244,7 @@ issue.fixed_version_id = fixed_version != nil ? fixed_version.id : issue.fixed_version_id issue.done_ratio = row[attrs_map["done_ratio"]] || issue.done_ratio issue.estimated_hours = row[attrs_map["estimated_hours"]] || issue.estimated_hours + issue.parent_issue_id = parent_issue_id != nil ? parent_issue_id : issue.parent_issue_id # custom fields issue.custom_field_values = issue.available_custom_fields.inject({}) do |h, c|
既存のチケットに対して親チケットを設定、変更、親チケットを外す(チケット番号を0で設定)はOK.
ただ、選択項目で「translation missing: ja, field_parent_issue_id」になるのはカッコ悪いので直したいんだけど…