changelog shortlog tags manifest raw

changeset: order resourceをsingletonに変更する。order.idをsessionに保持する。

changeset 13: 907a36cf5ba1
parent 12:755229281e85
child 14:e280ef17cd5a
author: moriq <moriq@moriq.com>
date: Mon Mar 10 09:38:39 2008 +0900 (16 years ago)
files: .hgignore app/controllers/orders_controller.rb app/views/orders/edit.html.erb app/views/orders/new.html.erb app/views/orders/show.html.erb config/routes.rb test/functional/orders_controller_test.rb
description: order resourceをsingletonに変更する。order.idをsessionに保持する。
--- a/.hgignore	Mon Mar 10 03:51:59 2008 +0900
+++ b/.hgignore	Mon Mar 10 09:38:39 2008 +0900
@@ -4,3 +4,4 @@ syntax: glob
 *.sqlite3
 schema.rb
 nbproject
+arc
--- a/app/controllers/orders_controller.rb	Mon Mar 10 03:51:59 2008 +0900
+++ b/app/controllers/orders_controller.rb	Mon Mar 10 09:38:39 2008 +0900
@@ -1,19 +1,10 @@ class OrdersController < ApplicationCont
 class OrdersController < ApplicationController
-  # GET /orders
-  # GET /orders.xml
-  def index
-    @orders = Order.find(:all)
+  before_filter :assign_session_order
 
-    respond_to do |format|
-      format.html # index.html.erb
-      format.xml  { render :xml => @orders }
-    end
-  end
-
-  # GET /orders/1
-  # GET /orders/1.xml
+  # GET /order
+  # GET /order.xml
   def show
-    @order = Order.find(params[:id])
+    # @order = Order.find(params[:id])
 
     respond_to do |format|
       format.html # show.html.erb
@@ -21,10 +12,10 @@ class OrdersController < ApplicationCont
     end
   end
 
-  # GET /orders/new
-  # GET /orders/new.xml
+  # GET /order/new
+  # GET /order/new.xml
   def new
-    @order = Order.new
+    # @order = Order.new
 
     respond_to do |format|
       format.html # new.html.erb
@@ -32,20 +23,20 @@ class OrdersController < ApplicationCont
     end
   end
 
-  # GET /orders/1/edit
+  # GET /order/edit
   def edit
-    @order = Order.find(params[:id])
+    # @order = Order.find(params[:id])
   end
 
-  # POST /orders
-  # POST /orders.xml
+  # POST /order
+  # POST /order.xml
   def create
-    @order = Order.new(params[:order])
+    # @order = Order.new(params[:order])
 
     respond_to do |format|
       if @order.save
         flash[:notice] = 'Order was successfully created.'
-        format.html { redirect_to(@order) }
+        format.html { redirect_to(order_path) }
         format.xml  { render :xml => @order, :status => :created, :location => @order }
       else
         format.html { render :action => "new" }
@@ -54,15 +45,15 @@ class OrdersController < ApplicationCont
     end
   end
 
-  # PUT /orders/1
-  # PUT /orders/1.xml
+  # PUT /order
+  # PUT /order.xml
   def update
-    @order = Order.find(params[:id])
+    # @order = Order.find(params[:id])
 
     respond_to do |format|
       if @order.update_attributes(params[:order])
         flash[:notice] = 'Order was successfully updated.'
-        format.html { redirect_to(@order) }
+        format.html { redirect_to(order_url) }
         format.xml  { head :ok }
       else
         format.html { render :action => "edit" }
@@ -71,15 +62,24 @@ class OrdersController < ApplicationCont
     end
   end
 
-  # DELETE /orders/1
-  # DELETE /orders/1.xml
+  # DELETE /order
+  # DELETE /order.xml
   def destroy
-    @order = Order.find(params[:id])
+    # @order = Order.find(params[:id])
     @order.destroy
 
     respond_to do |format|
-      format.html { redirect_to(orders_url) }
+      format.html { redirect_to(order_url) }
       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/app/views/orders/edit.html.erb	Mon Mar 10 03:51:59 2008 +0900
+++ b/app/views/orders/edit.html.erb	Mon Mar 10 09:38:39 2008 +0900
@@ -2,7 +2,7 @@
 
 <%= error_messages_for :order %>
 
-<% form_for(@order) do |f| %>
+<% form_for(@order, :url => order_path) do |f| %>
   <p>
     <b>Name</b><br />
     <%= f.text_field :name %>
@@ -18,5 +18,5 @@
   </p>
 <% end %>
 
-<%= link_to 'Show', @order %> |
-<%= link_to 'Back', orders_path %>
+<%= link_to 'Show', order_path %> |
+<%= link_to 'Back', order_path %>
--- a/app/views/orders/new.html.erb	Mon Mar 10 03:51:59 2008 +0900
+++ b/app/views/orders/new.html.erb	Mon Mar 10 09:38:39 2008 +0900
@@ -2,7 +2,7 @@
 
 <%= error_messages_for :order %>
 
-<% form_for(@order) do |f| %>
+<% form_for(@order, :url => order_path) do |f| %>
   <p>
     <b>Name</b><br />
     <%= f.text_field :name %>
@@ -18,4 +18,4 @@
   </p>
 <% end %>
 
-<%= link_to 'Back', orders_path %>
+<%= link_to 'Back', order_path %>
--- a/app/views/orders/show.html.erb	Mon Mar 10 03:51:59 2008 +0900
+++ b/app/views/orders/show.html.erb	Mon Mar 10 09:38:39 2008 +0900
@@ -9,5 +9,5 @@
 </p>
 
 
-<%= link_to 'Edit', edit_order_path(@order) %> |
-<%= link_to 'Back', orders_path %>
+<%= link_to 'Edit', edit_order_path %> |
+<%= link_to 'Back', order_path %>
--- a/config/routes.rb	Mon Mar 10 03:51:59 2008 +0900
+++ b/config/routes.rb	Mon Mar 10 09:38:39 2008 +0900
@@ -1,7 +1,7 @@ ActionController::Routing::Routes.draw d
 ActionController::Routing::Routes.draw do |map|
   map.resources :order_items
 
-  map.resources :orders
+  map.resource :order
 
   map.resources :products
 
--- a/test/functional/orders_controller_test.rb	Mon Mar 10 03:51:59 2008 +0900
+++ b/test/functional/orders_controller_test.rb	Mon Mar 10 09:38:39 2008 +0900
@@ -1,45 +1,59 @@ require File.dirname(__FILE__) + '/../te
 require File.dirname(__FILE__) + '/../test_helper'
 
 class OrdersControllerTest < ActionController::TestCase
-  def test_should_get_index
+  def _test_should_get_index
+    create_session_order
     get :index
     assert_response :success
     assert_not_nil assigns(:orders)
   end
 
   def test_should_get_new
+    create_session_order
     get :new
     assert_response :success
   end
 
   def test_should_create_order
-    assert_difference('Order.count') do
+    create_session_order
+    # TODO: singleton resource はPOSTできないはず。
+    assert_difference('Order.count', 0) do
       post :create, :order => { }
     end
 
-    assert_redirected_to order_path(assigns(:order))
+    assert_redirected_to order_path
   end
 
   def test_should_show_order
-    get :show, :id => orders(:moriq).id
+    create_session_order
+    get :show
     assert_response :success
   end
 
   def test_should_get_edit
-    get :edit, :id => orders(:moriq).id
+    create_session_order
+    get :edit
     assert_response :success
   end
 
   def test_should_update_order
-    put :update, :id => orders(:moriq).id, :order => { }
-    assert_redirected_to order_path(assigns(:order))
+    create_session_order
+    put :update, :order => { }
+    assert_redirected_to order_path
   end
 
   def test_should_destroy_order
+    create_session_order
     assert_difference('Order.count', -1) do
-      delete :destroy, :id => orders(:moriq).id
+      delete :destroy
     end
 
-    assert_redirected_to orders_path
+    assert_redirected_to order_path
   end
+
+  private
+    def create_session_order
+      order = orders(:moriq)
+      @request.session[:order_id] = order.id
+    end
 end