2

同様に、freezeオブジェクト値を更新する機能を (ある程度) 無効にします。直接 ( ) と間接 ( )User.disable_persistenceの両方で呼び出された、そのオブジェクトと関連オブジェクトの作成/保存/更新機能を無効にするメソッドを構築するにはどうすればよいでしょうか。User.saveUser.children << child

次のような宝石、または簡単な方法はありますか?

class User < ...
  def disable_persistence
    # magic here (nullify save, and other methods, prevent callbacks etc.)
    class_eval :before_save do 
      errors.add(:base, "Persistence has been disabled for this object")
    end
  end
end
4

3 に答える 3

2

false に設定されている場合、ルート URL にリダイレクトするbefore_saveブール フィールド (たとえば ) の値をチェックするフィルタを追加できます。メソッドが呼び出されるeditable前にブロックが終了します。create/save/update

于 2013-07-26T19:49:00.683 に答える
1

トランザクションを作成し、変更をロールバックするために例外をスローできます。

于 2013-07-26T20:12:31.763 に答える