0

マルチテナント クエリのスコープを設定する目的で、これらのモデルにさまざまなデフォルト スコープとコールバックを追加する 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でこれを機能させる方法について、誰かが私を助けてくれますか?

4

1 に答える 1