# HG changeset patch # User moriq # Date 1205088719 -32400 # Node ID 755229281e85fe9c6289287423c9004a88158151 # Parent 094fe4526925de7a6311cb735751e567d94398a5 add scaffold order_item. --- 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 @@ + + + + + + OrderItems: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

<%= flash[:notice] %>

+ +<%= yield %> + + + --- /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 @@ +

Editing order_item

+ +<%= error_messages_for :order_item %> + +<% form_for(@order_item) do |f| %> +

+ Order
+ <%= f.text_field :order %> +

+ +

+ Product
+ <%= f.text_field :product %> +

+ +

+ Quantity
+ <%= f.text_field :quantity %> +

+ +

+ <%= f.submit "Update" %> +

+<% 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 @@ +

Listing order_items

+ + + + + + + + +<% for order_item in @order_items %> + + + + + + + + +<% end %> +
OrderProductQuantity
<%=h order_item.order %><%=h order_item.product %><%=h order_item.quantity %><%= link_to 'Show', order_item %><%= link_to 'Edit', edit_order_item_path(order_item) %><%= link_to 'Destroy', order_item, :confirm => 'Are you sure?', :method => :delete %>
+ +
+ +<%= 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 @@ +

New order_item

+ +<%= error_messages_for :order_item %> + +<% form_for(@order_item) do |f| %> +

+ Order
+ <%= f.text_field :order %> +

+ +

+ Product
+ <%= f.text_field :product %> +

+ +

+ Quantity
+ <%= f.text_field :quantity %> +

+ +

+ <%= f.submit "Create" %> +

+<% 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 @@ +

+ Order: + <%=h @order_item.order %> +

+ +

+ Product: + <%=h @order_item.product %> +

+ +

+ Quantity: + <%=h @order_item.quantity %> +

+ + +<%= 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