Cấu trúc tệp seed.rb của bạn để cho phép tạo và cập nhật dữ liệu liên tục. Bạn không bị giới hạn chỉ chạy một tệp hạt giống một lần và nếu bạn cho rằng nó chỉ được sử dụng cho triển khai ban đầu, bạn sẽ bỏ lỡ tính linh hoạt mà nó có thể cung cấp trong việc thiết lập dữ liệu tham chiếu.
Một tập tin hạt giống chỉ là ruby để bạn có thể làm những việc như:
user = User.find_or_initialize_by(email: '[email protected]')
user.name = 'Bob'
user.password = 'secret'
user.role = 'manager'
user.save!
này sẽ tạo dữ liệu mới nếu nó không tồn tại hoặc cập nhật dữ liệu nếu nó tìm thấy một số.
Nếu bạn cấu trúc tệp hạt giống của mình một cách chính xác, bạn cũng có thể tạo và cập nhật các đối tượng phụ thuộc.
Tôi khuyên bạn nên sử dụng lưu trữ bang để đảm bảo rằng các ngoại lệ được nêu ra trong trường hợp không thể lưu đối tượng. Đây là phương pháp dễ nhất để gỡ lỗi hạt giống.
Tôi sử dụng seedbank gem để cung cấp thêm cấu trúc cho dữ liệu hạt giống của mình, bao gồm thiết lập dữ liệu cho mỗi môi trường, hạt giống phụ thuộc và hơn thế nữa.
Tôi không khuyên bạn nên sử dụng di chuyển cho dữ liệu hạt giống. Có sự thiếu linh hoạt (làm thế nào để bạn nhắm mục tiêu dữ liệu hạt giống vào một môi trường chẳng hạn) và không có cách thực sự để xây dựng một tập hợp dữ liệu có thể sử dụng lại bất cứ lúc nào để làm mới một môi trường cụ thể. Bạn cũng sẽ có một tập hợp các di chuyển không có tham chiếu đến lược đồ của bạn và bạn sẽ phải tạo các lần di chuyển mới mỗi lần bạn muốn tạo dữ liệu mới hoặc thay đổi hiện tại.
Bạn có thể chạy 'seed.rb' bao nhiêu lần tùy thích, nó chỉ là một tập lệnh ruby bình thường ... Mặc dù bạn cần lưu ý rằng nếu bạn đã chạy nó trước và chạy lại, bạn sẽ nhận được các bản sao. Trong trường hợp của bạn nếu bạn muốn chỉ thêm một hàng dữ liệu, sau đó là một nhiệm vụ 'rake' hoặc sử dụng một tập lệnh runner http://guides.rubyonrails.org/command_line.html#rails-runner Tôi không nghĩ rằng di chuyển là thích hợp cho điều này mặc dù. – j03w