Mis*_*hko 4 ruby-on-rails ruby-on-rails-3
考虑我的控制器的这个代码:
def create
change_some_db_values
buyer = Buyer.new(params[:buyer])
if buyer.save
redirect_to(:action => 'index')
else
render('new')
end
end
Run Code Online (Sandbox Code Playgroud)
我想提前知道是否buyer.save会失败.如果它会失败我不想执行change_some_db_values.我怎么能实现这个目标?
Ski*_*ick 11
您可以在保存之前添加有效性检查:
def create
buyer = Buyer.new(params[:buyer])
if buyer.valid?
change_some_db_values
end
if buyer.save
redirect_to(:action => 'index')
else
render('new')
end
end
Run Code Online (Sandbox Code Playgroud)
更好的方法可能是将所有更改放入事务中,然后在save失败时回滚.
def create
Buyer.transaction do
change_some_db_values
buyer = Buyer.new(params[:buyer])
buyer.save!
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4895 次 |
| 最近记录: |