- 637 名前:nobodyさん mailto:sage [2010/01/04(月) 00:32:56 ID:???]
- Railsの勉強で、簡単なブログツールを作っています。
記事のモデルオブジェクト(Post)にコメント数を表すカラム(comment_count)を作成しているのですが、これの更新方法がよくわかりません。 たぶんトランザクションを使って、コメントが保存できたらcomment_countを1増やすという方法になると思うのですが、 以下のようなコードであっているでしょうか。どなたか添削をお願いします。 def add_comment # ブログ記事のモデルオブジェクトを検索 post = Post.find(params[:id]) or raise ActiveRecord::RecordNotFound.new # コメントオブジェクトを作成し、記事IDを設定 comment = Comment.new(params[:comment]) comment.post_id = post.id begin # トランザクション開始 Post.transaction do # コメントをセーブ comment.save! # コメントがセーブできたら、コメント数を1増やす post.comment_count += 1 post.save! end # エラーがなければ 'OK' を出力 render :text=>'OK' rescue ActiveRecord::RecordInvalid => ex # エラーがあれば、エラーメッセージを出力 errmsg = comment.errors.collect{|arr| arr.join(': ')}.join("¥n") response.status = 422 render :text=>errmsg end end
|

|