--- a/app/models/order.rb Mon Mar 10 03:31:38 2008 +0900
+++ b/app/models/order.rb Mon Mar 10 03:51:59 2008 +0900
@@ -1,2 +1,3 @@ class Order < ActiveRecord::Base
class Order < ActiveRecord::Base
+ has_many :items, :class_name => 'OrderItem'
end
--- a/config/routes.rb Mon Mar 10 03:31:38 2008 +0900
+++ b/config/routes.rb Mon Mar 10 03:51:59 2008 +0900
@@ -1,4 +1,6 @@ ActionController::Routing::Routes.draw d
ActionController::Routing::Routes.draw do |map|
+ map.resources :order_items
+
map.resources :orders
map.resources :products
--- a/test/fixtures/orders.yml Mon Mar 10 03:31:38 2008 +0900
+++ b/test/fixtures/orders.yml Mon Mar 10 03:51:59 2008 +0900
@@ -1,8 +1,8 @@
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-one:
- name: MyString
- email: MyString
+moriq:
+ name: moriq
+ email: moriq@moriq.com
two:
name: MyString
--- a/test/fixtures/products.yml Mon Mar 10 03:31:38 2008 +0900
+++ b/test/fixtures/products.yml Mon Mar 10 03:51:59 2008 +0900
@@ -1,9 +1,9 @@
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
-one:
+carrot:
name: にんじん
price: 100
-two:
+onion:
name: たまねぎ
price: 150
--- a/test/functional/orders_controller_test.rb Mon Mar 10 03:31:38 2008 +0900
+++ b/test/functional/orders_controller_test.rb Mon Mar 10 03:51:59 2008 +0900
@@ -21,23 +21,23 @@ class OrdersControllerTest < ActionContr
end
def test_should_show_order
- get :show, :id => orders(:one).id
+ get :show, :id => orders(:moriq).id
assert_response :success
end
def test_should_get_edit
- get :edit, :id => orders(:one).id
+ get :edit, :id => orders(:moriq).id
assert_response :success
end
def test_should_update_order
- put :update, :id => orders(:one).id, :order => { }
+ put :update, :id => orders(:moriq).id, :order => { }
assert_redirected_to order_path(assigns(:order))
end
def test_should_destroy_order
assert_difference('Order.count', -1) do
- delete :destroy, :id => orders(:one).id
+ delete :destroy, :id => orders(:moriq).id
end
assert_redirected_to orders_path
--- a/test/functional/products_controller_test.rb Mon Mar 10 03:31:38 2008 +0900
+++ b/test/functional/products_controller_test.rb Mon Mar 10 03:51:59 2008 +0900
@@ -21,23 +21,23 @@ class ProductsControllerTest < ActionCon
end
def test_should_show_product
- get :show, :id => products(:one).id
+ get :show, :id => products(:carrot).id
assert_response :success
end
def test_should_get_edit
- get :edit, :id => products(:one).id
+ get :edit, :id => products(:carrot).id
assert_response :success
end
def test_should_update_product
- put :update, :id => products(:one).id, :product => { }
+ put :update, :id => products(:carrot).id, :product => { }
assert_redirected_to product_path(assigns(:product))
end
def test_should_destroy_product
assert_difference('Product.count', -1) do
- delete :destroy, :id => products(:one).id
+ delete :destroy, :id => products(:carrot).id
end
assert_redirected_to products_path
--- a/test/unit/order_test.rb Mon Mar 10 03:31:38 2008 +0900
+++ b/test/unit/order_test.rb Mon Mar 10 03:51:59 2008 +0900
@@ -1,8 +1,9 @@ require File.dirname(__FILE__) + '/../te
require File.dirname(__FILE__) + '/../test_helper'
class OrderTest < ActiveSupport::TestCase
- # Replace this with your real tests.
- def test_truth
- assert true
+ fixtures :all
+
+ def test_items
+ assert_equal(2, orders(:moriq).items.size)
end
end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/controllers/order_items_controller.rb Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,85 @@
+class OrderItemsController < ApplicationController
+ # GET /order_items
+ # GET /order_items.xml
+ def index
+ @order_items = OrderItem.find(:all)
+
+ respond_to do |format|
+ format.html # index.html.erb
+ format.xml { render :xml => @order_items }
+ end
+ end
+
+ # GET /order_items/1
+ # GET /order_items/1.xml
+ def show
+ @order_item = OrderItem.find(params[:id])
+
+ respond_to do |format|
+ format.html # show.html.erb
+ format.xml { render :xml => @order_item }
+ end
+ end
+
+ # GET /order_items/new
+ # GET /order_items/new.xml
+ def new
+ @order_item = OrderItem.new
+
+ respond_to do |format|
+ format.html # new.html.erb
+ format.xml { render :xml => @order_item }
+ end
+ end
+
+ # GET /order_items/1/edit
+ def edit
+ @order_item = OrderItem.find(params[:id])
+ end
+
+ # POST /order_items
+ # POST /order_items.xml
+ def create
+ @order_item = OrderItem.new(params[:order_item])
+
+ respond_to do |format|
+ if @order_item.save
+ flash[:notice] = 'OrderItem was successfully created.'
+ format.html { redirect_to(@order_item) }
+ format.xml { render :xml => @order_item, :status => :created, :location => @order_item }
+ else
+ format.html { render :action => "new" }
+ format.xml { render :xml => @order_item.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # PUT /order_items/1
+ # PUT /order_items/1.xml
+ def update
+ @order_item = OrderItem.find(params[:id])
+
+ respond_to do |format|
+ if @order_item.update_attributes(params[:order_item])
+ flash[:notice] = 'OrderItem was successfully updated.'
+ format.html { redirect_to(@order_item) }
+ format.xml { head :ok }
+ else
+ format.html { render :action => "edit" }
+ format.xml { render :xml => @order_item.errors, :status => :unprocessable_entity }
+ end
+ end
+ end
+
+ # DELETE /order_items/1
+ # DELETE /order_items/1.xml
+ def destroy
+ @order_item = OrderItem.find(params[:id])
+ @order_item.destroy
+
+ respond_to do |format|
+ format.html { redirect_to(order_items_url) }
+ format.xml { head :ok }
+ end
+ end
+end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/helpers/order_items_helper.rb Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,2 @@
+module OrderItemsHelper
+end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/models/order_item.rb Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,4 @@
+class OrderItem < ActiveRecord::Base
+ belongs_to :order
+ belongs_to :product
+end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/layouts/order_items.html.erb Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
+ <title>OrderItems: <%= controller.action_name %></title>
+ <%= stylesheet_link_tag 'scaffold' %>
+</head>
+<body>
+
+<p style="color: green"><%= flash[:notice] %></p>
+
+<%= yield %>
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/order_items/edit.html.erb Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,27 @@
+<h1>Editing order_item</h1>
+
+<%= error_messages_for :order_item %>
+
+<% form_for(@order_item) do |f| %>
+ <p>
+ <b>Order</b><br />
+ <%= f.text_field :order %>
+ </p>
+
+ <p>
+ <b>Product</b><br />
+ <%= f.text_field :product %>
+ </p>
+
+ <p>
+ <b>Quantity</b><br />
+ <%= f.text_field :quantity %>
+ </p>
+
+ <p>
+ <%= f.submit "Update" %>
+ </p>
+<% end %>
+
+<%= link_to 'Show', @order_item %> |
+<%= link_to 'Back', order_items_path %>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/order_items/index.html.erb Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,24 @@
+<h1>Listing order_items</h1>
+
+<table>
+ <tr>
+ <th>Order</th>
+ <th>Product</th>
+ <th>Quantity</th>
+ </tr>
+
+<% for order_item in @order_items %>
+ <tr>
+ <td><%=h order_item.order %></td>
+ <td><%=h order_item.product %></td>
+ <td><%=h order_item.quantity %></td>
+ <td><%= link_to 'Show', order_item %></td>
+ <td><%= link_to 'Edit', edit_order_item_path(order_item) %></td>
+ <td><%= link_to 'Destroy', order_item, :confirm => 'Are you sure?', :method => :delete %></td>
+ </tr>
+<% end %>
+</table>
+
+<br />
+
+<%= link_to 'New order_item', new_order_item_path %>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/order_items/new.html.erb Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,26 @@
+<h1>New order_item</h1>
+
+<%= error_messages_for :order_item %>
+
+<% form_for(@order_item) do |f| %>
+ <p>
+ <b>Order</b><br />
+ <%= f.text_field :order %>
+ </p>
+
+ <p>
+ <b>Product</b><br />
+ <%= f.text_field :product %>
+ </p>
+
+ <p>
+ <b>Quantity</b><br />
+ <%= f.text_field :quantity %>
+ </p>
+
+ <p>
+ <%= f.submit "Create" %>
+ </p>
+<% end %>
+
+<%= link_to 'Back', order_items_path %>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/views/order_items/show.html.erb Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,18 @@
+<p>
+ <b>Order:</b>
+ <%=h @order_item.order %>
+</p>
+
+<p>
+ <b>Product:</b>
+ <%=h @order_item.product %>
+</p>
+
+<p>
+ <b>Quantity:</b>
+ <%=h @order_item.quantity %>
+</p>
+
+
+<%= link_to 'Edit', edit_order_item_path(@order_item) %> |
+<%= link_to 'Back', order_items_path %>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/db/migrate/004_create_order_items.rb Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,15 @@
+class CreateOrderItems < ActiveRecord::Migration
+ def self.up
+ create_table :order_items do |t|
+ t.references :order
+ t.references :product
+ t.integer :quantity
+
+ t.timestamps
+ end
+ end
+
+ def self.down
+ drop_table :order_items
+ end
+end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/fixtures/order_items.yml Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,11 @@
+# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
+
+moriq_carrot:
+ order: moriq
+ product: carrot
+ quantity: 2
+
+moriq_onion:
+ order: moriq
+ product: onion
+ quantity: 1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/functional/order_items_controller_test.rb Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,45 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class OrderItemsControllerTest < ActionController::TestCase
+ def test_should_get_index
+ get :index
+ assert_response :success
+ assert_not_nil assigns(:order_items)
+ end
+
+ def test_should_get_new
+ get :new
+ assert_response :success
+ end
+
+ def test_should_create_order_item
+ assert_difference('OrderItem.count') do
+ post :create, :order_item => { }
+ end
+
+ assert_redirected_to order_item_path(assigns(:order_item))
+ end
+
+ def test_should_show_order_item
+ get :show, :id => order_items(:moriq_carrot).id
+ assert_response :success
+ end
+
+ def test_should_get_edit
+ get :edit, :id => order_items(:moriq_carrot).id
+ assert_response :success
+ end
+
+ def test_should_update_order_item
+ 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
+ assert_difference('OrderItem.count', -1) do
+ delete :destroy, :id => order_items(:moriq_carrot).id
+ end
+
+ assert_redirected_to order_items_path
+ end
+end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/unit/order_item_test.rb Mon Mar 10 03:51:59 2008 +0900
@@ -0,0 +1,9 @@
+require File.dirname(__FILE__) + '/../test_helper'
+
+class OrderItemTest < ActiveSupport::TestCase
+ fixtures :all
+ # Replace this with your real tests.
+ def test_order
+ assert_equal(orders(:moriq), order_items(:moriq_carrot).order)
+ end
+end