マルチテナント クエリのスコープを設定する目的で、これらのモデルにさまざまなデフォルト スコープとコールバックを追加する ActiveRecord ミックスイン (それを呼んでもいいと思いますか?) があります。
私ができるようにしたいのは、そのモデルの既存の一意性検証を変更して、スコープを含めることです。を使用してすべての検証を確認できることがわかったModel.validators
ので、当然のことながらスコープ オプションを次のように変更しようとしました。
Model.validators
.select{|v| v.is_a?(ActiveRecord::Validations::UniquenessValidator)}
.map{|v| v.options[:scope] = :client_id }
RuntimeError: can't modify frozen Hash
..しかし、これはoptions
ハッシュのエラーになります。どうすればこれを実行できるか知っている人はいますか?おそらくかなりハッキーなコードが含まれることを理解しています。
編集できない場合は、オーバーライドするか、キャッチするか、何かできますか?
編集 -これは私がやろうとしていることとほぼ同じですが、Rails 3.2では機能しません。検証の保存方法が完全に変更されたと思いますか? Rails 3でこれを機能させる方法について、誰かが私を助けてくれますか?