module DirtySeed::Assigners::FakerHelper
Helps with faker values
Constants
- MAX_RETRIES
Public Instance Methods
faker_value(generator:, method:, options: nil)
click to toggle source
Returns a rabdom value matching the requirements @param generator [Symbol] faker generator @param method [Symbol] faker method @param options [Hash] options used by faker @return [Object] @example
faker_value(generator: :Internet, method: :email, options: { domain: 'example' }) #=> "alice@example.name"
@note Faker raises a RetryLimitExceeded if it reaches MAX_RETRIES
(with a unique generator)
In this case return nil since it appears not to be possible to return a new unique value
# File lib/dirty_seed/assigners/helpers/faker_helper.rb, line 20 def faker_value(generator:, method:, options: nil) params = options ? [method, options] : [method] faker_generator(generator).public_send(*params) rescue Faker::UniqueGenerator::RetryLimitExceeded nil end
Private Instance Methods
faker_generator(generator)
click to toggle source
Returns a faker generator @param generator [Symbol] fake generator @return [Class, Faker::UniqueGenerator] a faker class or a faker unique generator @example
Faker::Lorem Faker::UniqueGenerator.new(Faker::Lorem)
# File lib/dirty_seed/assigners/helpers/faker_helper.rb, line 35 def faker_generator(generator) @faker_generator ||= if unique? Faker::UniqueGenerator.new("::Faker::#{generator}".constantize, MAX_RETRIES) else "::Faker::#{generator}".constantize end end
unique?()
click to toggle source
Should the value be unique? @return [Boolean]
# File lib/dirty_seed/assigners/helpers/faker_helper.rb, line 46 def unique? @unique ||= validators&.any? do |validator| validator.is_a? ActiveRecord::Validations::UniquenessValidator end end