diff --git a/app/controllers/stockit_controller.rb b/app/controllers/stockit_controller.rb index a20e16b2..b9a82b65 100644 --- a/app/controllers/stockit_controller.rb +++ b/app/controllers/stockit_controller.rb @@ -4,16 +4,16 @@ class StockitController < ApplicationController @stock_articles = StockArticle.undeleted.includes(:supplier, :article_category). order('suppliers.name, article_categories.name, articles.name') end - + def index_on_stock_article_create # See publish/subscribe design pattern in /doc. @stock_article = StockArticle.find(params[:id]) - + render :layout => false end def index_on_stock_article_update # See publish/subscribe design pattern in /doc. @stock_article = StockArticle.find(params[:id]) - + render :layout => false end @@ -24,43 +24,41 @@ class StockitController < ApplicationController render :layout => false end - + # (2) StockArticle as template def copy @stock_article = StockArticle.find(params[:stock_article_id]).dup - + render :layout => false end - + # (3) non-stock Article as template def derive @stock_article = Article.find(params[:old_article_id]).becomes(StockArticle).dup - + render :layout => false end def create - @stock_article = StockArticle.new(params[:stock_article]) - if @stock_article.valid? && @stock_article.save - render :layout => false - else - render :action => 'new', :layout => false - end + @stock_article = StockArticle.new({quantity: 0}.merge(params[:stock_article])) + @stock_article.save! + render :layout => false + rescue ActiveRecord::RecordInvalid + render :action => 'new', :layout => false end def edit @stock_article = StockArticle.find(params[:id]) - + render :layout => false end def update @stock_article = StockArticle.find(params[:id]) - if @stock_article.update_attributes(params[:stock_article]) - render :layout => false - else - render :action => 'edit', :layout => false - end + @stock_article.update_attributes!(params[:stock_article]) + render :layout => false + rescue ActiveRecord::RecordInvalid + render :action => 'edit', :layout => false end def show @@ -70,7 +68,7 @@ class StockitController < ApplicationController def show_on_stock_article_update # See publish/subscribe design pattern in /doc. @stock_article = StockArticle.find(params[:id]) - + render :layout => false end diff --git a/app/models/stock_article.rb b/app/models/stock_article.rb index 27fc563c..7837f7c5 100644 --- a/app/models/stock_article.rb +++ b/app/models/stock_article.rb @@ -5,6 +5,8 @@ class StockArticle < Article scope :available, -> { undeleted.where('quantity > 0') } + validates :quantity, presence: true, numericality: {greater_than_or_equal_to: 0} + before_destroy :check_quantity # Update the quantity of items in stock @@ -46,4 +48,3 @@ class StockArticle < Article true end end -