質問するログイン新規登録

回答編集履歴

1

追記

2017/11/19 02:25

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -69,4 +69,24 @@
69
69
  | 6 | 3 | 4 | 200 | beaf_b | 2017-11-19 02:01:31 UTC | 2017-11-19 02:01:31 UTC |
70
70
  +----+----------+--------+-------+--------+-------------------------+-------------------------+
71
71
  6 rows in set
72
+ ```
73
+
74
+ 追記: 2017-11-19 11:30
75
+ User に has_many :order_details, through: :orders を追加して、
76
+ user.irder_detail をつかった場合は次のようになります。
77
+ (SQL として 2 つの SELECT が発行されています。 joins を使った場合は 1 つの SELECT でした。)
78
+
79
+ ```ruby
80
+ irb(main):003:0> User.find_by(name: 'kato').order_details
81
+ User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."name" = ? LIMIT ? [["name", "kato"], ["LIMIT", 1]]
82
+ 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]]
83
+ +----+----------+--------+-------+--------+-------------------------+-------------------------+
84
+ | id | order_id | amount | price | item | created_at | updated_at |
85
+ +----+----------+--------+-------+--------+-------------------------+-------------------------+
86
+ | 1 | 1 | 1 | 100 | fish_a | 2017-11-19 02:01:31 UTC | 2017-11-19 02:01:31 UTC |
87
+ | 2 | 1 | 2 | 200 | fish_b | 2017-11-19 02:01:31 UTC | 2017-11-19 02:01:31 UTC |
88
+ | 3 | 2 | 1 | 10 | fish_a | 2017-11-19 02:01:31 UTC | 2017-11-19 02:01:31 UTC |
89
+ | 4 | 2 | 2 | 20 | fish_b | 2017-11-19 02:01:31 UTC | 2017-11-19 02:01:31 UTC |
90
+ +----+----------+--------+-------+--------+-------------------------+-------------------------+
91
+ 4 rows in set
72
92
  ```