class RandomizedField::Callback

Implements the before_create ActiveRecord callback used to set the value of the randomized field.

Attributes

field_name[R]
generator[R]

Public Class Methods

new(field_name, **generator_opts, &block) click to toggle source
# File lib/randomized_field/callback.rb, line 8
def initialize(field_name, **generator_opts, &block)
  @field_name = field_name
  @generator = Generator.new(generator_opts, &block)
end

Public Instance Methods

before_create(record) click to toggle source
# File lib/randomized_field/callback.rb, line 13
def before_create(record)
  record[field_name] ||= new_field_value(record)
end

Private Instance Methods

new_field_value(record) click to toggle source
# File lib/randomized_field/callback.rb, line 19
def new_field_value(record)
  old_record = true

  until old_record.nil?
    new_value = generator.generate
    old_record = record.class.find_by(field_name => new_value)
  end

  new_value
end