Opublikowany 2024-05-10 07:18:12 UTC przez: Redaktor

Ruby on Rails - Tworzenie i uruchamianie własnych plików seeds

  1. Tworzymy nowy plik app/db/workout_seeds.rb
  2. tworzymy plik app/lib/db_seeds.rake

 

db/workout_seeds.rb

# Tworzenie treningów od początku roku do dzisiaj
start_date = Date.new(Date.today.year, 1, 1)
end_date = Date.today

# Funkcja pomocnicza do generowania losowych dat między dwoma datami
def random_date(start_date, end_date)
  rand(start_date..end_date)
end

# Funkcja pomocnicza do wybierania losowych treningów
def select_random_exercises(count)
  Exercise.order("RANDOM()").limit(count)
end

# Funkcja pomocnicza do wybierania losowych osób
def select_random_people(count)
  Person.where(id: 7..9).limit(count)
end

120.times do |index|
  workout_date = random_date(start_date, end_date)
  workout = Workout.create(
  title: "trening z dnia #{workout_date} :: #{index + 1}",
  description: Faker::Lorem.paragraphs(number: rand(0..6)),
  revision: rand(1..5),
  load: "#{rand(5..50)} kg",
  load_unit: "kg",
  volume_description: "Opis objętości #{index + 1}",
  duration: "#{rand(15..60)}",
  intensity: rand(1..10),
  intensity_description: "Opis intensywności #{index + 1}",
  # author_id: rand(1..10), # Zakładając, że masz 10 autorów w bazie danych
  author_id: 4,
  scheduled_date: workout_date,
  workout_type: "ćwiczenie",
  volume: "#{rand(1..5)} serii po #{rand(5..20)} powtórzeń"
)

# Wybieranie losowej liczby ćwiczeń dla treningu (można dostosować, jeśli trzeba)
number_of_exercises = rand(1..3)
exercises = select_random_exercises(number_of_exercises)

# Dodawanie wybranych ćwiczeń do treningu
exercises.each do |exercise|
  workout.exercises << exercise
end

# Wybieranie losowej liczby osób dla treningu (można dostosować, jeśli trzeba)
number_of_people = rand(1..3)
people = select_random_people(number_of_people)

# Dodawanie wybranych osób do treningu
people.each do |person|
  workout.people << person
end

puts "Stworzono trening #{workout.title} na dzień #{workout.scheduled_date} z #{number_of_people} osobami"
end

puts "Utworzono 120 treningów!"

 

tworzymy plik app/lib/db_seed.rake

namespace :db do
  namespace :seed do
    desc 'Load data from workout_seeds.rb'
    task workout_seeds: :environment do
    load(Rails.root.join('db', 'workout_seeds.rb'))
  end
  task athlete_workout_seeds: :environment do
    load(Rails.root.join('db', 'athlete_workout_seeds.rb'))
  end
  end
end

 

Powrót do Listy artykułów