Fix associtation and UI

# 前回PRとの関係
前回PRまで`user has many orders`で作っていました。
しかし、`user has one order`のほうが良いとわかりました。

`user has many orders`ですと、`app/views/arriveds/show.html.erb`で不具合が出ます。
リソース設計としても、このアプリケーションは注文に期限を設けない限り、１ユーザーは１つの注文しかできないのが自然と教えて頂きました。
そのため、修正します。

また、それとは別に、より良いUIにするため注文作成時のビュー変更作業をします。

## １オーダーにする理由について

### `user has many orders`の場合
----------------------------------------------------
「紅茶１個、緑茶１個」を注文したとします。その後で「烏龍茶１個と、追加の緑茶１個」を注文したくなったとします。
これをシステムに反映するには、注文「烏龍茶１個と緑茶１個」を新規に作成することになります。

この場合

* `user`が１つあり、 `order`を２つ持っている。
  * １つめの`order`は、以下２つの`order_detail`を持つ
    * 紅茶１個を意味する`order_detail`
    * 緑茶１個を意味する`order_detail`
  * ２つめの`order`は以下２つの`order_detail`を持つ
    * 烏龍１個を意味する`order_detail`
    * 緑茶１個を意味する`order_detail`

ということになります。
注文する緑茶は２個なのに、それを別々の`order` でわけていることが特に不自然なのだと思います。
（また、前回注文を削除して新規注文を作成するという方法もとれますが、同様に不自然なのだと思います。）
     
### `user has one order`の場合
----------------------------------------------------
同じことをしたくなった場合、以下のように、より自然な形で反映が可能です。

* `user`が１つあり、 `order`を１つ持っている。
* `order`は、以下３つの`order_detail`を持つ
     * 紅茶１個を意味する`order_detail`
     * 緑茶２個を意味する`order_detail` 
     * 烏龍１個を意味する`order_detail`  

# このPRで何をするか
* [x] `user has one order`にして、現状の機能を壊さないように他の場所も修正を入れます。
* [x]  `orders#edit`のビュー（ユーザーインターフェース）を大幅に変更します。

# 終了条件（どうしたらWIPが取れるか）
1. [x] `user has one order`かつ、常に`user`は`order`を持つようにすること。
2. [x]  UIを変更すること。
 * [x] `select`要素を減らして見やすくする
 * [x] 合計注文金額を出す
 * [x] 空白の商品名、単価を選んだ時は空白でないものを選択するよう促すメッセージを出す
3. [x] 規約や慣習に沿った、読みやすいコードであること。
4. [x] 主要な機能のfeature specとmodelのうち不安な部分のspecを書いてgreenにすること。
すみません、質問です。
```
users_allow_empty_detail = User.includes(order: {order_details: :item})
                               .where(orders: {state: Order.states['arrived']})
@users = users_allow_empty_detail.reject {|user| user.order.order_details.empty? }
```
このコードをより良く書き換えるにはどうすれば良いでしょうか。
`includes`と`joins`を併用すれば良い、と教えて頂いたのですが、すみません、勉強不足で書けませんでした。
自分で書いてみたものの、あまりうまくいきませんでした。


状況
--------------------------------------
４つの表`users`, `orders`, `order_details`, `items`があります。その関連は

1. user has one order             かつ order belongs_to user
2. order has many order_detail    かつ order_details belongs_to order
3. order_details belongs_to item  かつ item has many order_details

やりたいこと
--------------------------------------
1. 関連する`orders`, `order_details`, `items`と一緒に`users`を取得したい。
2. N＋１問題を回避したい。
3. `orders`は 対応する`order_details`がない(`user.order.order_details.empty? == true`)場合がある。その時は取得しない。
4. `orders`には`state`カラムがあり、`state == 2`のもののみ取得したい。（なお`Order.states['arrived']` は`2`です）

自分で書いたもの
--------------------------------------
```
#SELECT "order_details"."order_id" FROM "order_details"が最初に走ってしまう。
 User.includes(order: {order_details: :item})
     .where(orders: {state: Order.states['arrived']})
     .where('orders.id' => OrderDetail.pluck("order_id").uniq)
```
```
#無駄なクエリがないがActiveRecord::Resultが返ってしまう。
ActiveRecord::Base.connection.exec_query(
  "SELECT DISTINCT users. *, orders. *, order_details. *,  items. *  
   FROM users  
   JOIN orders ON orders.user_id = users.id 
   INNER JOIN order_details  ON  order_details.order_id = orders.id   
   JOIN items ON order_details.item_id = items.id 
   WHERE orders.state = 2 ")
```