我想你已经知道 bang 方法(create!
等)会引发错误,而普通方法(create
)不会。你的问题是应该在哪里使用哪个。好吧,这归结为人员偏好,没有一种正确的方法。但通常rails代码库(包括rails生成的默认代码)似乎遵循这个
控制器中的普通方法
def create
@post = Post.new
@post = params[:posts]
if @post.save
#success, redirect_to new post & set succcess flash
else
#failure, render new action again with errors
end
测试中的 Bang 方法
it "creates a new post" do
p = Post.create! :title => '' #auto raise an error on validation failure
p.should do_something
end
所以在我的拙见中,你不应该在你的控制器中使用 bang 方法。如果你这样做了,请优雅地处理它们,以便用户收到有用的错误消息,说明出了什么问题,如何修复它而不是 Rails 著名的“出错了”错误 500 页。