カート作り終盤

今日の作業

カート作り
チェックアウト機能作り
WebLogic研修


今日はWebLogic研修でテストがあります。
これまでの研修の成果を発揮したいです。

わからなかったこと

今日は順調に進めました。

今日の作業でわかったこと

今日は商品情報が重複したときに数量だけ変更するやりかたや
エラー処理や通知に役立つRailsのフラッシュ(Flash)機能
を知ることができました。

明日やること

チェックアウト機能の追加
WebLogic研修

調べたことのまとめ

重複している商品の情報を一行にまとめて数量を増やすためには

app/models内のcart.rbのadd_product()メソッドに条件を追加

def add_product(product)
  @items << LineItem.for_product(product)
  @total_price += product.price
end

        ↓
        ↓

def add_product(product)
  item = @items.find{|i| i.product_id == product.id }
  if item
    item.quantity += 1
  else
    item = LineItem.for_product(product)
    @item << item
  end
  total_price += product.price
end

@itemsから情報が順番に取り出されiに格納される。
引数で来たproduct.idと@itemsのproduct_idが一致すれば数量を
追加elseなら@itemsにすべて追加。

エラー処理

add_to_cartで無効な商品idを渡されたときの処理
Railsにはエラー処理と通知に役立つフラッシュ(Flash)と呼ばれる機能がある。
リクエストの過程でオブジェクトを格納できる。フラッシュに格納されたオブジェクト
はそのセッションが終わるまで使用可能となり、その後動的に削除される。

  def add_to_cart
    product = Product.find(params[:id])
    @cart = find_cart
    @cart.add_product(product)
    redirect_to(:action => 'display_cart')
  rescue
    logger.error("無効な商品 #{params[:id]}にアクセスしようとしました")
    flash[:notice]= '無効な商品です'
    redirect_to(:action => 'index')
  end

find()によって投げられた例外はrescue節によって捕捉される。
Railsのloggerを使用してエラーのログを記録し、メッセージをnoticeとして
フラッシュに格納しカタログページを表示するためのリダイレクトを行っている。



今日の一言

ライブドアのブログサービス「nowa」について。
今日、newsでnowaに新機能追加という記事を見つけた。
最近、ブログで日報を書くことになり初めて自分のブログを作ったので
少し気になった。
そもそもnowaとは

1.記事公開の相手を「フレンドにのみ公開」か「全体に公開」、もしくは自分だけ
の日記として利用するユーザーのための「非公開」と、以上3パターンから選ぶこ
とができる点

2.書籍、音楽、DVDをはじめ、おもちゃやマタニティグッズなどを、レビューとして読
者に紹介することができる機能を提供している点

3.Twitterのような要素を含んだ、一言コメントを共有しあうスペース「ナニシテル?」
がある点

4.スパム対策としてポイント制度「ノアエン」。ポイントをためてnowa内でサービスを
利用する際消費するしくみがある点

などが特徴として挙げられるらしい。
つまり多彩な機能のブログ。

そして今回の新機能で
3の「ナニシテル?」にチャネル機能を追加した
具体的には友達でなくても特定のテーマ別に「ナニシテル?」を共有して、チャット感覚
でしゃべり合える機能らしい。
いろんなアイデアがつまっているなぁと感心しつつ、暇を見つけて登録してみようと
思った。

http://nowa.jp/