0

私はルビーとモンゴイドが初めてです。私はvalidates_withを使用する必要があり、以下は私が持っているコードです

class ValidatorClass < ActiveModel::Validator

  def validate(record)

    if record.name == ""

        record.errors.add(:name, "An error occurred")

    end

  end
end

class Person
  include Mongoid::Document
  include Mongoid::Timestamps::Created
  include Mongoid::Timestamps::Updated
  include Mongoid::Versioning
  include ActiveModel::Validations

  field :id, type: Integer
  field :name, type: String
  field :age, type: Integer

   validates_with ValidatorClass, :on => :create

end

しかし、次のコードでモデルを作成すると:

Person.create(id: 5, name: "", age: 50)

エラーがスローされません。私はRailsを使用していません。私はmongodbでルビーだけを使用しています。誰か助けてくれませんか?前もって感謝します。

4

3 に答える 3

0

これを試してください:

class ValidatorClass < ActiveModel::Validator

  def validate(record)

        if !record.name.present?
            record.errors.add(:name, "An error occurred")
        end 

  end
end
于 2012-11-30T16:56:27.133 に答える
0

クラスに ActiveModel::Validations を含める必要はありません

次のコードを使用するように検証クラスを変更してみてください。

class ValidatorClass < ActiveModel::Validator
  def validate(record)
    if record.name.blank?
      record.errors.add(:name, "An error occurred")
    end
  end
end

それが役に立てば幸い!

于 2012-11-30T16:51:51.427 に答える
0

ドキュメントから、クラス Person に次の行を追加してみてください:

include ActiveModel::Validations

http://api.rubyonrails.org/classes/ActiveModel/Validator.html

于 2012-11-30T16:34:19.693 に答える