QA #725
奈良 裕記 さんが6年以上前に更新
h3. ■現象/要望
親子階層が複雑なチケットを更新すると、チケットの親子階層表示が異常になる場合がある。
(親チケット以外の子チケットとして表示される。) 親子階層が複雑なチケットを更新すると、チケットの親子階層表示がおかしくなる。(親チケットとは異なるチケットの子チケットに表示上なる。)
現象発生時、issueテーブル上のlft,rgt項目が異常になっていた。
parent_idの値は、編集前の正しい親チケットIDが設定されていた。
修復手順を確認したい。
h3. ■解決策
Rails Console上から、チケット階層構造を修正する下記メソッドを実行することで修復できる。
但し、データ修復対応であり、現象発生を防止するものではない。 issueテーブルのlft,rgtという項目の値がおかしくなる事が原因で、Redmineより親子階層を修正するメソッドが提供されている。
下記、rebuild_treeでチケット全部の階層構造を修復するが、件数が多い場合は時間が掛かる。
rebuild_single_treeで親チケットを指定すれば、短時間で修復可能。(Redmine3.4以降)
<pre><code class="ruby">
[root redmine]# pwd
/var/lib/redmine
[root redmine]# bundle exec rails console production
Loading production environment (Rails 4.2.8)
irb(main):001:0>
irb(main):002:0* Issue.rebuild_tree!
=> []
irb(main):004:0> Issue.rebuild_single_tree(1)!
</code></pre>
h3. ■対応状況
Rails Console上から、チケット階層構造を修正する下記メソッドを実行することで修復できる。
但し、データ修復対応であり、現象発生を防止するものではない。 issueテーブルのlft,rgtという項目の値がおかしくなる事象は修正されてないので、データを修正する事が解決策になる。
h3. ■補足
関連情報
本家#24167 Rebuild a single nested set with nested_set plugin
( 特定のチケットの階層崩れを修正する場合は、
Feature #24167( http://www.redmine.org/issues/24167 )
/lib/redmine/nested_set/issue_nested_set.rbのメソッドを )にある通り、/lib/redmine/nested_set/issue_nested_set.rbのメソッドを railsコマンドとして実行すれば良いはずなのですが、実行方法がわかりません…
戻る