before_create
人々がコメントを投稿しすぎていないかどうかをチェックするフィルターがあります。
もしそうなら、私は彼らのアカウントにフラグを立てたいです。
class Comment < ActiveRecord::Base
before_create :check_rate_limit
def check_rate_limit
comments_in_last_minute = self.user.comments.count(:conditions => ["comments.created_at > ?", 1.minute.ago])
if comments_in_last_minute > 2
user.update_attribute :status, "suspended"
return false
end
true
end
end
before フィルターは false を返し、コメントの作成を停止します。問題は、これがユーザー モデルに加えた変更を元に戻す ROLLBACK をトリガーすることです。
これを達成するための正しいパターンは何ですか? 具体的には、オブジェクトが作成されるたびにチェックを実行し、チェックが失敗した場合に別のモデルを編集できるようにすることです。