Struktura pliku seed.rb umożliwia bieżące tworzenie i aktualizowanie danych. Nie musisz ograniczać się do uruchamiania pliku źródłowego tylko raz i jeśli uważasz, że jest on używany tylko do początkowego wdrożenia, stracisz elastyczność, jaką może zaoferować w ustawianiu danych referencyjnych.
Plik nasiona są tylko rubin, dzięki czemu można zrobić rzeczy jak:
user = User.find_or_initialize_by(email: '[email protected]')
user.name = 'Bob'
user.password = 'secret'
user.role = 'manager'
user.save!
To stworzy nowe dane, jeśli nie istnieje lub zaktualizować dane, jeżeli stwierdzi niektórych.
Jeśli prawidłowo tworzysz strukturę pliku źródłowego, możesz także tworzyć i aktualizować zależne obiekty.
Zalecam użycie funkcji składowania typu "bang", aby zapewnić wyjątki w przypadku, gdy obiekt nie może zostać zapisany. Jest to najłatwiejsza metoda debugowania nasion.
Używam seedbank gem, aby zapewnić większą strukturę moich danych źródłowych, w tym dane dotyczące ustawień dla poszczególnych środowisk, nasion zależnych i innych.
Nie polecam używania migracji danych nasion. Brak jest elastyczności (w jaki sposób można docelowo kierować dane źródłowe tylko do jednego środowiska) i nie można w żaden sposób utworzyć zestawu danych wielokrotnego użytku, który można uruchomić w dowolnym momencie w celu odświeżenia określonego środowiska. Miałbyś także zestaw migracji, które nie mają odniesienia do twojego schematu i będziesz musiał utworzyć nowe migracje za każdym razem, gdy chcesz wygenerować nowe lub zmienić bieżące dane.
Możesz uruchomić 'seed.rb' tyle razy, ile chcesz, to tylko zwykły plik skryptowy z rubinem ... Chociaż pamiętaj, że jeśli wcześniej go uruchomiłeś, a uruchomisz go ponownie, otrzymasz duplikaty. W twoim przypadku, jeśli chcesz po prostu dodać wiersz danych, a następnie "rake task" lub użyć skryptu runner http://guides.rubyonrails.org/command_line.html#rails-runner Nie uważam, że migracja jest odpowiednia dla to jednak. – j03w