質問編集履歴
3
fix
test
CHANGED
File without changes
|
test
CHANGED
@@ -60,3 +60,10 @@
|
|
60
60
|
ruby 2.7.7
|
61
61
|
pg 1.4.6
|
62
62
|
|
63
|
+
|
64
|
+
### 追記
|
65
|
+
いろいろ試していたら、rails6.0.4からこのエラーが発生することがわかりました
|
66
|
+
|
67
|
+
以下が怪しそうです、、
|
68
|
+
> joinsの元の順序が維持されるようArelのjoinsのeager loadingを修正。
|
69
|
+
https://techracho.bpsinc.jp/hachi8833/2021_06_16/108918
|
2
typo
test
CHANGED
File without changes
|
test
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
何故か先に、userとprofileのjoinが先に来ているんですね(本来はpostとuserのjoinが先に来ないといけない)
|
37
37
|
rails6.0.3.3だと問題なく、postとuserのjoinが先にきていたのですがrails6.1系にあげたらjoinの順番がおかしくなりました。
|
38
38
|
解決方法をご教示いただけませんでしょうか?
|
39
|
-
```
|
39
|
+
```rails6.1.X以降
|
40
40
|
SELECT
|
41
41
|
posts.*
|
42
42
|
FROM
|
@@ -44,7 +44,15 @@
|
|
44
44
|
INNER JOIN profiles ON profles.user_id = user.id
|
45
45
|
LEFT OUTER JOIN user ON users.id = posts.user_id
|
46
46
|
```
|
47
|
-
|
47
|
+
以下は問題ないSQLです
|
48
|
+
```rails6.0.3.3時点
|
49
|
+
SELECT
|
50
|
+
posts.*
|
51
|
+
FROM
|
52
|
+
posts
|
53
|
+
LEFT OUTER JOIN user ON users.id = posts.user_id
|
54
|
+
INNER JOIN profiles ON profles.user_id = user.id
|
55
|
+
```
|
48
56
|
### 補足情報(FW/ツールのバージョンなど)
|
49
57
|
|
50
58
|
■バージョン
|
1
typo
test
CHANGED
File without changes
|
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
■テーブル構造
|
9
9
|
users
|
10
10
|
posts(users has_many posts)
|
11
|
-
profiles(users has_one po
|
11
|
+
profiles(users has_one profile)
|
12
12
|
|
13
13
|
|
14
14
|
|
@@ -30,10 +30,10 @@
|
|
30
30
|
|
31
31
|
もともとrails6.0.3.3だとエラーが発生していませんでした
|
32
32
|
rails6.1系にあげたら発生するようになりました
|
33
|
-
rails7にあげたりしたのですが治りませんでした
|
33
|
+
試しに、rails7にあげたりしたのですが治りませんでした
|
34
34
|
|
35
|
-
原因は一応わかっていまして、以下のように
|
35
|
+
原因は一応わかっていまして、以下のようにActiveRecordから発行されるSQLに問題があります。
|
36
|
-
(本来はpostとuserのjoinが先に来ないといけない)
|
36
|
+
何故か先に、userとprofileのjoinが先に来ているんですね(本来はpostとuserのjoinが先に来ないといけない)
|
37
37
|
rails6.0.3.3だと問題なく、postとuserのjoinが先にきていたのですがrails6.1系にあげたらjoinの順番がおかしくなりました。
|
38
38
|
解決方法をご教示いただけませんでしょうか?
|
39
39
|
```
|