/ / Jaka jest najlepsza praktyka aktualizowania danych zarodka szynowego - ruby ​​na szynach, grabie, ziarnie

Jaka jest najlepsza praktyka w zakresie aktualizacji danych o ziarnach szyny - ruby-on-rails, rake, seed

Mam aplikację szynową w produkcji z danymi nasion. Musimy dodać więcej danych źródłowych, ale używając rake db:populate zreplikuje wszystkie stare dane początkowe i oczywiście nie chcemy dodawać danych do migracji.

Jaka jest najlepsza metoda dodawania dodatkowych danych źródłowych do aplikacji?

Odpowiedzi:

1 dla odpowiedzi № 1

Prawdopodobnie będziesz musiał zbudować kolejną prowizjęzadanie. Lub możesz po prostu sprawdzić każdy nowy wiersz, aby sprawdzić, czy już istnieje. Może to potrwać dłużej, ale przynajmniej nie będziesz mieć duplikatów.


1 dla odpowiedzi nr 2

Używam nieporęcznego obejścia w moim pliku źródłowym, aby zatrzymać dodawanie tych samych danych dwukrotnie.

if Therapy.count == 0
therapies = Therapy.create([
{ :name => "Peritoneal dialysis"
},
{ :name => "Haemodialysis"
},
{ :name => "Plasma therapy"
},
{ :name => "Laparotomy"
},
{ :name => "Haemofiltration"
}
])
end

Przypuszczam, że można to zmienić w następujący sposób

   if Therapy.count == 0
therapies = Therapy.create([
{ :name => "Peritoneal dialysis"
},
{ :name => "Haemodialysis"
},
{ :name => "Plasma therapy"
},
{ :name => "Laparotomy"
},
{ :name => "Haemofiltration"
}
])
elsif Therapy.count == 4
therapies = Therapy.create([
{ :name => "NEW THERAPY"
}
])
end

1 dla odpowiedzi nr 3

Stań na ramionach olbrzymów

Spójrz na SeedFu klejnot.

Umożliwia utworzenie takiego pliku źródłowego, który automatycznie prowadzi do jednej lub więcej kolumn:

User.seed(:id,
{ id: 1, login: "jon",   email: "jon@example.com",   name: "Jon"   },
{ id: 2, login: "emily", email: "emily@example.com", name: "Emily" }
)

Możesz także zaktualizować te pliki źródłowe, a on zajmie się aktualizacją wartości DB.

To w połączeniu z Seedbank, to właśnie skończyłem używać.


-1 dla odpowiedzi № 4

Jeśli uważasz, że powinno być coś do zrobienia, możesz sprawdzić dostępne zadania.

rake -T seed
rake db:seed  # Load the seed data from db/seeds.rb

To powiedziawszy seed_fu zapewnia znacznie lepszą funkcjonalność IMHO