컨텍스트 외부에서 Rails 유효성 검사기를 사용하는 방법

3785 단어 railsvalidationdry
왜 바퀴를 재발명합니까?

ActiveModel::Validations::NumericalityValidator.new(attributes: [nil]).send(:is_number?, "666", Float::DIG, nil)

=> true

ActiveModel::Validations::NumericalityValidator.new(attributes: [nil]).send(:is_number?, "meh", Float::DIG, nil)

=> false


이제 예를 들어 JSON 열에 저장하기 전에 중첩된 JSON 값의 유효성을 검사할 수 있습니다.

# app/models/amendment.rb
class Amendment > ApplicationRecord

  store_accessor :amendments, :clauses

  validate :amendments_validation

  private

  def amendments_validation
    if self.clauses.present?
      if self.clauses["price"].present?
        errors.add(:clauses, "price is not a number") unless ActiveModel::Validations::NumericalityValidator.new(attributes:[nil]).send(:is_number?, self.clauses["price"], Float::DIG, nil)
      end
    end
  end

end

좋은 웹페이지 즐겨찾기