###複数の条件を分岐させる記述
条件1
ログインユーザーか未ログインユーザーか?
条件2
商品出品者とユーザーが一致するのか?
__条件3__
商品が有れば購入ボタンが有る、商品が無ければ購入ボタンが無い
<% if user_signed_in? %> //←ログインしているかを判定
<%if current_user.id == @item.user_id %> //←商品出品者とユーザーが一致するかを判定
<%= link_to "商品の編集", edit_item_path(@item.id), method: :get, class: "item-red-btn" %>
<p class="or-text">or</p>
<%= link_to "削除", item_path(@item.id), method: :delete, class:"item-destroy" %>
<% elsif @item.purchase_management.blank? %> //←商品モデルの中の購入履歴が空かを判定
<%= link_to "購入画面に進む", item_orders_path(@item.id) ,class:"item-red-btn"%>
<% end %>
<% end %>
##学んだポイント
条件文もアソシエーションとの関係を前提に記述する
今回苦労した実装は【条件3】を正常に挙動させることでした。
この記述の辿り着くまでに @order.purchase_management_id = nil や他の記述で試すもエラーが起こり、悪戦苦闘しておりました。アソシエーションとの関連を無視してどのような条件で記述すればいいのかを気づけていなかったのが、時間がかかった要因かと思います。
【item】 has_one 【purchase_management】
このアソシエーションを前提に記述することを気づけていれば、、、
つまり、itemがpurchase_managementを持っているかどうか?
purchase_managementは購入履歴のモデルです。
itemがpurchase_managementを持っていれば、売り切れ。
itemがpurchase_managementを持っていなければ在庫あり。
ということになります。
あとは、その真偽をどのように判定するか、、、
今回は【blank?】を用いました。
blank?メソッドは、オブジェクトが空白の場合はtrueを返し、オブジェクトが空白ではない場合はfalseを返すメソッドです。
この反対のメソッドは【present?】メソッドです。