質問編集履歴

3

fix

2023/03/03 02:47

投稿

thesnowman
thesnowman

スコア154

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

2023/03/02 23:45

投稿

thesnowman
thesnowman

スコア154

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

2023/03/02 23:43

投稿

thesnowman
thesnowman

スコア154

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 posts)
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
- 原因は一応わかっていまして、以下のように何故か先に、userとprofileのjoin先に来ているんで
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
  ```