Ruby on rails 3 我可以改进控制器的操作吗?

Ruby on rails 3 我可以改进控制器的操作吗?,ruby-on-rails-3,Ruby On Rails 3,这个动作行吗?有什么办法可以改进吗?我是否应该将订单的设置提取到一个私有方法并调用它?还是很好,符合“铁路路线” 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

这个动作行吗?有什么办法可以改进吗?我是否应该将订单的设置提取到一个私有方法并调用它?还是很好,符合“铁路路线”

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.

我会在订单模型中尽可能多地分解出一个私有方法,并使用一个模型挂钩调用它,例如在验证之前调用
。这对于一个动作来说太有逻辑了,而且践踏了整个MVC。

你可能还想把这篇文章发布在上面,看看你得到了什么样的回应。谢谢!也贴在那里了,我现在应该删除这个吗?如果人们开始投票否决它,但考虑到有人贴了答案,这似乎没问题。嗨,谢谢你的回复。如何将会话信息和其他变量输入钩子方法?(不必使用虚拟属性,因为这意味着它最终将与我上面所说的几乎相同?)设置虚拟属性没有意义,但是可以在没有会话数据的情况下完成的任何行都应该移动到模型中。