create!
bang メソッド (など) はエラーを発生させますが、plain メソッド ( ) は発生させないことは既にご存じだと思いますcreate
。あなたの質問は、どこで使用する必要があるかです。まあ、それは個人の好みに帰着しますが、これは正しい方法ではありません。しかし、一般的にレールコードベース(レールによって生成されたデフォルトコードを含む)はこれに従っているようです
コントローラーの単純なメソッド
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 メソッドを使用しないでください。その場合は、レールの有名な「何かが間違っていました」エラー500ページの代わりに、何が間違っていたのか、それを修正する方法を示す役立つエラーメッセージがユーザーに表示されるように、それらを適切に処理してください。