class SampleModels::AttributeSequence::RequiredBelongsToSource

Public Class Methods

new(assoc) click to toggle source
# File lib/sample_models/attribute_sequence.rb, line 95
def initialize(assoc)
  super()
  @assoc = assoc
  @previous_instances = {}
end

Public Instance Methods

existing_instance_not_previously_returned() click to toggle source
# File lib/sample_models/attribute_sequence.rb, line 101
def existing_instance_not_previously_returned
  previous_ids = @previous_instances.values.map(&:id)
  instance = nil
  if previous_ids.empty?
    @assoc.klass.last
  else
    @assoc.klass.last(
      :conditions => ["id not in (?)", previous_ids]
    )
  end
end
set_instance() click to toggle source
# File lib/sample_models/attribute_sequence.rb, line 113
def set_instance
  instance = existing_instance_not_previously_returned
  instance ||= @assoc.klass.sample
  @previous_instances[@number] = instance
end
value() click to toggle source
# File lib/sample_models/attribute_sequence.rb, line 119
def value
  if @previous_instances[@number]
    value = @previous_instances[@number]
    begin
      value.reload
      value.id
    rescue ActiveRecord::RecordNotFound
      set_instance
      @previous_instances[@number].id
    end
  else
    set_instance
    @previous_instances[@number].id
  end
end