テックキャンプ93日目〜商品購入機能①

kobasaです(´ω`*)新しい技術の予習が終わったので最終課題へ実装していきます。
まずはFormオブジェクトの実装から。…タスク多くない?

ここで無駄に悩む。どの部分から手をつけようか。どのあたりでコミットしようか。
今日の実装中の自分に言いたい。

kobasa(仮)
kobasa(仮)

気にするな進め(*^ω^*)

kobasa(仮)
kobasa(仮)

ベストなんてわかるレベルとちゃうやろ?
注意されてから直せばええねん!
次に活かせばええやろ(´ω`*)

後からならどうとでも言えるんですけどねw
もちろん正しい進め方なのかも不明です。

そして今日の進捗は、途中で詰まったりしながら
フォームオブジェクトのテストコード完成(仮)まで進められました。

残るタスクは、なんやかんやで次の土曜までかかりそう。
残り:「PAYJPでの決算」「購入済商品の表示変更」「購入済商品のページへの遷移制限」

93日目のまとめ

ルーティングをネストした時の記述について

ルーティングをネストしたときは、

<%= form_with model: [@item, @order] %>
def create
  @item = Item.find(params[:item_id])
  @order = @item.order.new(order_params)
end

のような記述にしないといけないと思っていました。
このような記述はコントローラーを跨いで処理をする場合に使用するようです。過去のアプリ見直します。
今回はorderコントローラーだけの記述で完了するのでモデルの指定はいつも通りでOK。

<%= form_with model: @order_address %>
def create
  @item = Item.find(params[:item_id])
  @order_address = OrderAddress.new(order_params)
end

form_with url:について

form_withではmodelオプションに記述したインスタンスに格納されているテーブルの情報がurlパスになる。

#newアクション
@tweet = Tweet.new
→<%= form_with model: @tweet %>
→<form action="/tweets" >

#editアクション
@tweet = Tweet.find(params[:id])
→<%= form_with model: @tweet %>
→<form action="/tweets/該当id" >

なので正しいパスになっていればmodelオプションだけで大丈夫。
ところがFormオブジェクトのように、
modelオプションに記述するインスタンスでは正しいパスにならないことがある。
そういう場合はurlオプションを使用し、正しいパスの記述をする。

#newアクション
@order_address = OrderAddress.new
→<%= form_with model: @order_address,
   url: item_orders_path(@item.id) %>

Fakerについて

必要なのかわからんようになってきた。
FactoryBotに自分が思う正しい記述を書いていると、
予期せぬバリデーションの穴がテストコードを通過したりするのかな。

コメント

タイトルとURLをコピーしました