1

名前の配列を持つモデルがあり、1 つのドキュメントだけが特定の名前を持つことができるようにしたいと考えています。これを処理するカスタム検証を作成しようとしています。私のカスタム検証とモデルは、現時点では次のようになります。

lib/unique_name_validator.rb
class UniqueNamesValidator < ActiveModel::EachValidator
  def validate_each( record, attribute, value )
  end
end
アプリ/モデル/MyModel.rb
class MyModel
  include Mongoid::Document

  validates :names, :unique_names => true

  field :names, :type => Array
end

しかし、不明なバリデータを取得しています: 'unique_names' (ArgumentError)。Mongoid のドキュメントには、各モデルに ActiveModel::Validation が含まれていると記載されています。これにより、カスタム検証を使用できると思いました。また、ActiveModel::Validator から継承する検証を作成し、validates_with を使用しようとしましたが、どちらも機能しません。

4

4 に答える 4

1

Rails 3を使用している場合、application.rbに以下を追加しない限り、unique_name_validator.rbがlibの下から自動的に取得されない場合があります。

config.autoload_paths += %W(#{config.root}/lib)
于 2011-01-21T05:50:36.957 に答える
0

カスタム検証はmongoidで機能しますが、モデルファイルから要求する必要がありました。

require 'unique_name_validator'

おそらく、カスタムバリデーターを自動的に取得するようにrails / mongoidを構成する方法はありますか?

于 2010-11-11T15:45:06.943 に答える
0

一意性のために、次を使用します。

validates_uniqueness_of

( http://mongoid.org/docs/validation/より)

validates_eachあまりにも動作します。

于 2011-02-04T21:42:14.753 に答える
0

application.rbのlibファイルを自動ロードするか

config.autoload_paths += %W(#{config.root}/lib)

またはフォルダunique_name_validator.rbにドロップinitializer

于 2011-01-21T10:55:58.457 に答える