# 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