Перемещение кода с контроллера на модель (модель с тонким контроллером) - PullRequest
1 голос
/ 01 мая 2011

Hello Я новичок в RoR. Как я могу переключить мою простую логику контроллера на модель? Столбцы моей базы данных: тип_заказа, количество, количество отрегулированных

Контроллер

def create

 @product = Product.new(params[:product])

 # This is the control structure I want to move to Model

 if @product.order_type = "Purchase"
  @product.quantity_adjusted = -quantity
 else
  @product.quantity_adjusted = quantity
 end

end

Модель

class Product < ActiveRecord::Base
end

Спасибо LH

Ответы [ 2 ]

2 голосов
/ 01 мая 2011

Есть много способов сделать это. Один из возможных, наиболее естественных, способов - создать метод экземпляра, например:

def adjust_quantity(amount)
  (put logic here)
end

в вашей модели продукта. Затем в вашем контроллере вы должны сделать:

@product.adjust_quantity(quantity)
0 голосов
/ 10 июля 2011

Вы можете использовать обратный вызов в вашей модели.Например, after_create.

Контроллер:

def create
  @product = Product.new(params[:product])

  if @product.save
    # redirect
  else
    render :new
  end
end

Модель:

class Product < ActiveRecord::Base
  after_create :adjust_quantity

  private

  def adjust_quantity
    if self.order_type == "Purchase"
      self.quantity_adjusted = -quantity
    else
      self.quantity_adjusted = quantity
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...