gtt-project / redmine_custom_fields_groups

Redmine plugin for grouping custom fields.
GNU General Public License v3.0
12 stars 5 forks source link

Fixed invalid field order issue #17

Closed sanak closed 2 years ago

sanak commented 2 years ago

Fixes #16 .

Changes proposed in this pull request:

@gtt-project/maintainer

mopinfish commented 2 years ago

@sanak ソース上はレビューOKです。挙動の違いについては発行されるSQLをチェックしてみないとなんとも言えなさそうですね。文字列指定とシンボル指定での差が影響していそうな気がします。

https://teratail.com/questions/169089

sanak commented 2 years ago

@mopinfish 上記、了解しました。確認ありがとうございます。 発行されるSQLについては、後ほど確認するようにしています。

sanak commented 2 years ago

@mopinfish レビューコメントの方、ありがとうございました。

16 の原因ですが、ソートする position カラムのテーブル(custom_fields)がJOINされていないことが原因でした...。

SELECT
  "name",
  "custom_fields_group_fields"."custom_field_id"
FROM "custom_fields_group_fields"
  INNER JOIN "custom_fields_groups" ON "custom_fields_groups"."id" = "custom_fields_group_fields"."custom_fields_group_id"
  ORDER BY custom_fields_groups.position, "position" ASC

現時点での対応は、ソート列を抜くのみで、全く解決になってませんでしたので、

SELECT
  "name",
  "custom_fields_group_fields"."custom_field_id"
FROM "custom_fields_group_fields"
  INNER JOIN "custom_fields_groups" ON "custom_fields_groups"."id" = "custom_fields_group_fields"."custom_fields_group_id"

以下のように正しくソートするよう、修正します。

SELECT
  "custom_fields_groups"."name",
  "custom_fields_group_fields"."custom_field_id"
FROM "custom_fields_group_fields"
  INNER JOIN "custom_fields_groups" ON "custom_fields_groups"."id" = "custom_fields_group_fields"."custom_fields_group_id"
  INNER JOIN "custom_fields" ON "custom_fields"."id" = "custom_fields_group_fields"."custom_field_id"
  ORDER BY custom_fields_groups.position, custom_fields.position ASC
sanak commented 2 years ago

@mopinfish 追加コミットで動作確認しましたので、Squashマージします。 確認ありがとうございました。 🙇‍♂️