Ruby on rails Rails 5,即使模型验证失败,create方法也会运行吗?
我有一个Rails 5应用程序 我有一个订单控制器,它有一个create方法,可以保存来自表单提交的新订单。订单的一个字段是邮政编码,在我的create方法中,我使用邮政编码来计算运输成本Ruby on rails Rails 5,即使模型验证失败,create方法也会运行吗?,ruby-on-rails,validation,ruby-on-rails-5,Ruby On Rails,Validation,Ruby On Rails 5,我有一个Rails 5应用程序 我有一个订单控制器,它有一个create方法,可以保存来自表单提交的新订单。订单的一个字段是邮政编码,在我的create方法中,我使用邮政编码来计算运输成本 def create @order = Order.new(order_params) shipping = calculateShipping(@order.zip) ... end 我需要每个订单的邮政编码,以便在订单模型中进行验证 validates :zip, presence: tru
def create
@order = Order.new(order_params)
shipping = calculateShipping(@order.zip)
...
end
我需要每个订单的邮政编码,以便在订单模型中进行验证
validates :zip, presence: true
如果我现在提交一个没有邮政编码的订单,我会从calculateShipping中得到一个错误,因为它缺少邮政编码
谢谢 您可以这样做:尝试从参数创建订单,如果不成功,则重新显示新表单(有错误)
def create
@order = Order.new(order_params)
@order.calc_shipping
if @order.save
redirect_to @order, notice: 'Order was successfully created.'
else
render :new
end
end
在订单模型中,您可以使用一种方法来计算运费
def calc_shipping
self.shipping = ...
end
您可以这样做:尝试从参数创建订单,如果不成功,则重新显示新表单(有错误)
def create
@order = Order.new(order_params)
@order.calc_shipping
if @order.save
redirect_to @order, notice: 'Order was successfully created.'
else
render :new
end
end
在订单模型中,您可以使用一种方法来计算运费
def calc_shipping
self.shipping = ...
end