Sha256: 2fb066741f332135fdbd060cec5c193c01a60b9d4a8db6c62e4195365b815fb0

Contents?: true

Size: 1.63 KB

Versions: 1

Compression:

Stored size: 1.63 KB

Contents

class ValidatedThing < ActiveRecord::Base

  measured_length :length
  validates :length, measured: true

  measured_length :length_true
  validates :length_true, measured: true

  measured_length :length_message
  validates :length_message, measured: {message: "has a custom failure message"}

  measured_length :length_message_from_block
  validates :length_message_from_block, measured: { message: Proc.new { |record| "#{record.length_message_from_block_unit} is not a valid unit" } }

  measured_length :length_units
  validates :length_units, measured: {units: [:meter, "cm"]}

  measured_length :length_units_singular
  validates :length_units_singular, measured: {units: :ft, message: "custom message too"}

  measured_length :length_presence
  validates :length_presence, measured: true, presence: true

  measured_length :length_numericality_inclusive
  validates :length_numericality_inclusive, measured: {greater_than_or_equal_to: :low_bound, less_than_or_equal_to: :high_bound }

  measured_length :length_numericality_exclusive
  validates :length_numericality_exclusive, measured: {greater_than: Measured::Length.new(3, :m), less_than: Measured::Length.new(500, :cm), message: "is super not ok"}

  measured_length :length_numericality_equality
  validates :length_numericality_equality, measured: {equal_to: Proc.new { Measured::Length.new(100, :cm) }, message: "must be exactly 100cm"}

  measured_length :length_invalid_comparison
  validates :length_invalid_comparison, measured: {equal_to: "not_a_measured_subclass"}

  private

  def low_bound
    Measured::Length.new(10, :in)
  end

  def high_bound
    Measured::Length.new(20, :in)
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
measured-rails-2.5.0 test/support/models/validated_thing.rb