カート作成
今日の作業
カート作成
Unit会議
→この機能を実装するための、セッションやデータベースの関連を理解していきたい。
わからなかったこと
ARのモデル間の関係の定義の違いについてもっと理解を深める。
明日やること
カート作成の続き
今日の作業でわかったこと
今日のUnit会議で今後の僕の予定が決まった。
まずは今作っているショッピングサイトができたらリファクタリング。
その後はプロジェクトへのアサイン検討とのことなので
この準備期間できるだけ多くの知識を身につけていきたい。
調べたことのまとめ
リファクタリングとは
プログラムの振る舞いを変えることなくソースコードを変更することを指す。
find(:all, :conditions => "date_available <= now()", :order => "date_available desc")
↓
SQLにすると
↓
select * from products where date_available <= now() order by date_available desc;
カートの作成
データをセッションカートという一時的な保存場所に格納できるシステム作り
cookieとは
Webサイトの提供者が、Webブラウザを通じて訪問者のコンピュータに、一時的にデータを
保存させるしくみ。
ブラウザがアプリケーションに対してリクエストを送信する際には、cookieのデータもいっしょに送られる。
アプリケーションは、送られてきたcookie情報を使用して、そのリクエストの情報がサーバに格納されている
セッション情報と一致するか照合。
まずは、カートが必要になった時点で新しいカートオブジェクトをセッションに割り当て、それ以降
同じセッションでカートが必要になったときそのカートオブジェクトを見つけられるようにする。
storeコントローラ内に
private def find_cart session[:cart] ||= Cart.new end
とメソッドを実装。
sessionハッシュが:cartというキーに対応する値を持っている場合はその値を返し、
値が存在しない場合は、新しいカートオブジェクトが作られ、sessionに代入され新しいカートを返す。
「||=」は自己代入
例:
b ||= 2 #bが偽か未定義ならば2を代入
テーブル作成
カートには品目(line item)が格納される。
基本的に商品と数量を組み合わせたもの。
RadRailsのGeneratorでmodelを選択しLineItemを作成
db/migrate/005_create_line_items.rbを編集
t.column :product_id, :integer, :null => false t.column :quantity, :integer, :null => false t.column :unit_price, :integer, :null => false
必要なカラムを作りDBに反映