From 839151405b6619d8372a2b6c1aba788e28d9799c Mon Sep 17 00:00:00 2001 From: benji Date: Wed, 28 Oct 2015 22:07:48 +0100 Subject: [PATCH] Remove hack for nested models --- app/controllers/orders_controller.rb | 2 +- app/models/order_item.rb | 11 ----------- app/views/order_items/_order_item.html.haml | 5 +++-- app/views/orders/new.html.haml | 3 +-- spec/models/order_item_spec.rb | 2 +- 5 files changed, 6 insertions(+), 17 deletions(-) diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index ace4c01..b757ef8 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -31,6 +31,6 @@ class OrdersController < ApplicationController private def order_params - params.require(:order).permit(order_items_attributes: [:count, :price, product_attributes: [:id]]) + params.require(:order).permit(order_items_attributes: [:count, :price, :product_id]) end end diff --git a/app/models/order_item.rb b/app/models/order_item.rb index 45adfac..d8aa2c0 100644 --- a/app/models/order_item.rb +++ b/app/models/order_item.rb @@ -20,17 +20,6 @@ class OrderItem < ActiveRecord::Base before_destroy :put_back_in_stock! after_create :remove_from_stock! - accepts_nested_attributes_for :product - - def product_attributes=(attributes) - self.product = OrderItem.products.select{ |p| p.id == attributes[:id].to_i }.first - super - end - - def self.products - @products || Product.all - end - private def remove_from_stock! diff --git a/app/views/order_items/_order_item.html.haml b/app/views/order_items/_order_item.html.haml index 97c01aa..a1c62be 100644 --- a/app/views/order_items/_order_item.html.haml +++ b/app/views/order_items/_order_item.html.haml @@ -10,5 +10,6 @@ = content_tag :span, product.name = content_tag :small, euro(product.price) = f.counter :count, min: 0, max: product.stock, skip_label: true, wrapper_class: "input-group", class: "row_counter", data: { price: f.object.product.price_cents } - = f.fields_for :product do |product| - / This is needed for haml + = f.input :product_id + -# = f.fields_for :product do |product| + -# / This is needed for haml diff --git a/app/views/orders/new.html.haml b/app/views/orders/new.html.haml index 3f697af..a8632e3 100644 --- a/app/views/orders/new.html.haml +++ b/app/views/orders/new.html.haml @@ -19,8 +19,7 @@ %tr.order_item_wrapper{ data: { product: ff.object.product.id, price: ff.object.product.price_cents } } %td = ff.number_field :count - = ff.fields_for :product do |fff| - / Needed for haml + = ff.hidden_field :product_id %td x %td diff --git a/spec/models/order_item_spec.rb b/spec/models/order_item_spec.rb index 72a2cb6..73b3fe6 100644 --- a/spec/models/order_item_spec.rb +++ b/spec/models/order_item_spec.rb @@ -44,7 +44,7 @@ describe OrderItem do it 'should be less or equal to product stock' do @order_item.count = @order_item.product.stock + 1 expect(@order_item).to_not be_valid - @order_item.count = @order_item.product.stock + @order_item.count = [@order_item.product.stock, 100].min expect(@order_item).to be_valid end end