回答編集履歴

1

追記

2017/11/19 02:25

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -141,3 +141,43 @@
141
141
  6 rows in set
142
142
 
143
143
  ```
144
+
145
+
146
+
147
+ 追記: 2017-11-19 11:30
148
+
149
+ User に has_many :order_details, through: :orders を追加して、
150
+
151
+ user.irder_detail をつかった場合は次のようになります。
152
+
153
+ (SQL として 2 つの SELECT が発行されています。 joins を使った場合は 1 つの SELECT でした。)
154
+
155
+
156
+
157
+ ```ruby
158
+
159
+ irb(main):003:0> User.find_by(name: 'kato').order_details
160
+
161
+ User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."name" = ? LIMIT ? [["name", "kato"], ["LIMIT", 1]]
162
+
163
+ OrderDetail Load (0.3ms) SELECT "order_details".* FROM "order_details" INNER JOIN "orders" ON "order_details"."order_id" = "orders"."id" WHERE "orders"."user_id" = ? [["user_id", 1]]
164
+
165
+ +----+----------+--------+-------+--------+-------------------------+-------------------------+
166
+
167
+ | id | order_id | amount | price | item | created_at | updated_at |
168
+
169
+ +----+----------+--------+-------+--------+-------------------------+-------------------------+
170
+
171
+ | 1 | 1 | 1 | 100 | fish_a | 2017-11-19 02:01:31 UTC | 2017-11-19 02:01:31 UTC |
172
+
173
+ | 2 | 1 | 2 | 200 | fish_b | 2017-11-19 02:01:31 UTC | 2017-11-19 02:01:31 UTC |
174
+
175
+ | 3 | 2 | 1 | 10 | fish_a | 2017-11-19 02:01:31 UTC | 2017-11-19 02:01:31 UTC |
176
+
177
+ | 4 | 2 | 2 | 20 | fish_b | 2017-11-19 02:01:31 UTC | 2017-11-19 02:01:31 UTC |
178
+
179
+ +----+----------+--------+-------+--------+-------------------------+-------------------------+
180
+
181
+ 4 rows in set
182
+
183
+ ```