こんにちは。
この現象はおそらく全てのプロジェクトに適用のカスタムフィールドに限ると思います。
Project#all_custom_fields でチケットのカスタムフィールドを
呼び出してるわけですが、この IssueCustomField#for_all は
CustomField#for_all を呼び出していて結局のところ以下のメソッドになります。
def self.for_all
find(:all, :conditions => ["is_for_all=?", true])
end
find で、order を指定していないから並び替え出来ていないのでしょうね。
> 「ソート」は、画面の表示順序ではないのでしょうか?それとも、他にチケットの画面レイアウトをカスタマイズする方法はあるのでしょうか?
つまりコレはあくまでも管理画面上でのソートということでしょう。
これをチケットに反映させようと思うなら以下の方法で。
CustomField#for_all を改変すると他にも影響が出るので、
(というか並び替えを適用したいならここを変えるべき?)
ここだけに適用されるようなパッチにしました。
Index: app/models/project.rb
===================================================================
--- app/models/project.rb (リビジョン 1576)
+++ app/models/project.rb (作業コピー)
@@ -200,7 +200,7 @@
end
def all_custom_fields
- @all_custom_fields ||= (IssueCustomField.for_all +
custom_fields).uniq
+ @all_custom_fields ||= (IssueCustomField.find(:all, :conditions
=> ["is_for_all=?", true], :order => "position") + custom_fields).uniq
end
適当な試験しかしていないので何かしらバグがあるかもしれませんが
問題あればまた連絡してください。
ちなみに、プロジェクトで設定したカスタムフィールドに関しては
has_and_belongs_to_many :custom_fields,
:class_name => 'IssueCustomField',
:order =>
"#{CustomField.table_name}.position",
という感じで、order が入ってるので並び替えられてるのではないでしょうか?
では。