Skip to content

Instantly share code, notes, and snippets.

@blocknotes
Created August 11, 2021 16:16
Show Gist options
  • Select an option

  • Save blocknotes/ae2601b4efbf1a9b34b9a210aab38c83 to your computer and use it in GitHub Desktop.

Select an option

Save blocknotes/ae2601b4efbf1a9b34b9a210aab38c83 to your computer and use it in GitHub Desktop.

Revisions

  1. blocknotes created this gist Aug 11, 2021.
    25 changes: 25 additions & 0 deletions load_samples.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    # Creates sample methods to fetch single records - it can be useful for debugging, to skip some typing :)
    #
    # @param mode [Symbol] Load the first|last|random records
    # @param models [Array] Models to fetch from
    #
    # @return [Array] the available sample methods
    def load_samples(mode: :first, models: [Model1, Model2, Model3])
    puts "> load_samples options => mode: :#{mode} (first|last|random)"
    log_level = Rails.logger.level
    Rails.logger.level = :warn
    results = models.each_with_object({}) do |model, res|
    res[model.table_name.singularize] =
    case mode
    when :first then model.first
    when :last then model.last
    else model.except(:order).order('RANDOM()').first
    end
    end
    Rails.logger.level = log_level
    @samples = OpenStruct.new(results)
    results.each_key do |key|
    Object.define_method(key) { @samples[key] }
    end
    @samples.to_h.keys
    end