class DirtySeed::Assigners::Inclusion

Manages assignment when value should be included in an enumerable

Public Instance Methods

respond?() click to toggle source

Should be the value included in options? @return [Boolean]

# File lib/dirty_seed/assigners/inclusion.rb, line 20
def respond?
  @respond ||= options.present?
end
value() click to toggle source

Returns a random value matching validators @return [Object] a “primitive”

# File lib/dirty_seed/assigners/inclusion.rb, line 9
def value
  return unless respond?

  case options
  when Array then options.sample
  when Range then rand(options)
  end
end

Private Instance Methods

inclusion_validator() click to toggle source

Returns the inclusion validator if any

e.g. `validates :status, inclusion: { in: ["todo", "done", "aborted"] }`

@return [ActiveModel::Validations::InclusionValidator, nil]

# File lib/dirty_seed/assigners/inclusion.rb, line 38
def inclusion_validator
  validators&.find do |validator|
    validator.is_a? ActiveModel::Validations::InclusionValidator
  end
end
options() click to toggle source

Returns the inclusion options if value should be included in options @return [Array, Range] @example

["todo", "done", "aborted"]
0..10
# File lib/dirty_seed/assigners/inclusion.rb, line 31
def options
  @options ||= enum || inclusion_validator&.options&.dig(:in)
end