changelog shortlog tags manifest raw

changeset: order_item resourceをsession order resourceに属すように変更する。

changeset 14: e280ef17cd5a
parent 13:907a36cf5ba1
child 15:64acf98d15f4
author: moriq <moriq@moriq.com>
date: Mon Mar 10 09:55:26 2008 +0900 (16 years ago)
files: app/controllers/order_items_controller.rb config/routes.rb test/functional/order_items_controller_test.rb
description: order_item resourceをsession order resourceに属すように変更する。
--- a/app/controllers/order_items_controller.rb	Mon Mar 10 09:38:39 2008 +0900
+++ b/app/controllers/order_items_controller.rb	Mon Mar 10 09:55:26 2008 +0900
@@ -1,8 +1,10 @@ class OrderItemsController < Application
 class OrderItemsController < ApplicationController
+  before_filter :assign_session_order
+
   # GET /order_items
   # GET /order_items.xml
   def index
-    @order_items = OrderItem.find(:all)
+    @order_items = @order.items.find(:all)
 
     respond_to do |format|
       format.html # index.html.erb
@@ -13,7 +15,7 @@ class OrderItemsController < Application
   # GET /order_items/1
   # GET /order_items/1.xml
   def show
-    @order_item = OrderItem.find(params[:id])
+    @order_item = @order.items.find(params[:id])
 
     respond_to do |format|
       format.html # show.html.erb
@@ -24,7 +26,7 @@ class OrderItemsController < Application
   # GET /order_items/new
   # GET /order_items/new.xml
   def new
-    @order_item = OrderItem.new
+    @order_item = @order.items.new
 
     respond_to do |format|
       format.html # new.html.erb
@@ -34,13 +36,13 @@ class OrderItemsController < Application
 
   # GET /order_items/1/edit
   def edit
-    @order_item = OrderItem.find(params[:id])
+    @order_item = @order.items.find(params[:id])
   end
 
   # POST /order_items
   # POST /order_items.xml
   def create
-    @order_item = OrderItem.new(params[:order_item])
+    @order_item = @order.items.new(params[:order_item])
 
     respond_to do |format|
       if @order_item.save
@@ -57,7 +59,7 @@ class OrderItemsController < Application
   # PUT /order_items/1
   # PUT /order_items/1.xml
   def update
-    @order_item = OrderItem.find(params[:id])
+    @order_item = @order.items.find(params[:id])
 
     respond_to do |format|
       if @order_item.update_attributes(params[:order_item])
@@ -74,7 +76,7 @@ class OrderItemsController < Application
   # DELETE /order_items/1
   # DELETE /order_items/1.xml
   def destroy
-    @order_item = OrderItem.find(params[:id])
+    @order_item = @order.items.find(params[:id])
     @order_item.destroy
 
     respond_to do |format|
@@ -82,4 +84,13 @@ class OrderItemsController < Application
       format.xml  { head :ok }
     end
   end
+
+  private
+    def assign_session_order
+      unless session[:order_id].blank?
+	@order = Order.find(session[:order_id])
+      else
+	@order = Order.create
+      end
+    end
 end
--- a/config/routes.rb	Mon Mar 10 09:38:39 2008 +0900
+++ b/config/routes.rb	Mon Mar 10 09:55:26 2008 +0900
@@ -1,5 +1,5 @@ ActionController::Routing::Routes.draw d
 ActionController::Routing::Routes.draw do |map|
-  map.resources :order_items
+  map.resources :items, :controller => 'order_items', :name_prefix => 'order_', :path_prefix => '/order'
 
   map.resource :order
 
--- a/test/functional/order_items_controller_test.rb	Mon Mar 10 09:38:39 2008 +0900
+++ b/test/functional/order_items_controller_test.rb	Mon Mar 10 09:55:26 2008 +0900
@@ -2,17 +2,20 @@ require File.dirname(__FILE__) + '/../te
 
 class OrderItemsControllerTest < ActionController::TestCase
   def test_should_get_index
+    create_session_order
     get :index
     assert_response :success
     assert_not_nil assigns(:order_items)
   end
 
   def test_should_get_new
+    create_session_order
     get :new
     assert_response :success
   end
 
   def test_should_create_order_item
+    create_session_order
     assert_difference('OrderItem.count') do
       post :create, :order_item => { }
     end
@@ -21,25 +24,35 @@ class OrderItemsControllerTest < ActionC
   end
 
   def test_should_show_order_item
+    create_session_order
     get :show, :id => order_items(:moriq_carrot).id
     assert_response :success
   end
 
   def test_should_get_edit
+    create_session_order
     get :edit, :id => order_items(:moriq_carrot).id
     assert_response :success
   end
 
   def test_should_update_order_item
+    create_session_order
     put :update, :id => order_items(:moriq_carrot).id, :order_item => { }
     assert_redirected_to order_item_path(assigns(:order_item))
   end
 
   def test_should_destroy_order_item
+    create_session_order
     assert_difference('OrderItem.count', -1) do
       delete :destroy, :id => order_items(:moriq_carrot).id
     end
 
     assert_redirected_to order_items_path
   end
+
+  private
+    def create_session_order
+      order = orders(:moriq)
+      @request.session[:order_id] = order.id
+    end
 end