我可以改进这个控制器动作吗?

时间:2012-03-01 21:35:06

标签: ruby-on-rails-3

这个动作好吗?可以用任何方式改进吗?我应该将订单的设置提取到私有方法并只是调用它吗?或者它是否正常并符合'Rails方式'?

def create
  @order = Order.new(params[:order])
  @product = Product.find(session[:product])
  @order.amount = session[:total_amount]
  @order.ip_address = request.remote_ip
  @order.product_id = @product.id
  @order.product_price = @product.price
  @order.voucher = @voucher_value
  @order.friend_id = session[:friend_id]
  if @order.save
    if @order.purchase
      render :action => "success"
      reset_friend_session_codes
    else
      render :action => "failure"
    end
  else
    render :action => 'new'
  end
end

TIA。

1 个答案:

答案 0 :(得分:0)

我会尽可能多地考虑订单模型中的私有方法,并使用其中一个模型挂钩调用它,例如before_validation。这对于一个动作来说是太多的逻辑,并且践踏了整个MVC。