Так это звучит например, вы, возможно, будете добавлять, изменять или удалять данные по пути, который будет перемешаться среди других данных. Итак, seeds.rb отсутствует. Что вам нужно использовать, это миграции. Таким образом, вы можете искать и идентифицировать данные, которые хотите изменить, посредством последовательного процесса, для которого миграция предназначена именно для этого. В противном случае я считаю, что лучше всего изменить данные вручную через консоль рельсов.
EDIT: Хорошим примером может быть следующее.
Вы используете Capistrano для обработки вашего развертывания. Вы хотите добавить новую категорию, игрушки в свою систему. В файле миграции вы добавите Category.create(:name => "Toys")
или что-то подобное в своей функции миграции (я забыл, что они теперь называют это в Rails 3.1, я знаю, что есть только один метод), запустите rake db:migrate
локально, проверьте свои изменения, зафиксируйте их, затем если допустимо развернуть его, используя cap:deploy
, и это приведет к новой миграции с вашей производственной базой данных, добавит новую категорию и сделает ее доступной для использования в развернутом приложении.
Этот пример в стороне, это действительно зависит от вашего рабочего процесса. Если вы считаете, что добавление новых данных через миграцию не приведет к шлейфу вашего приложения, перейдите к нему. Я скажу, что DHH (David Heinemeier Hansson) не является поклонником этого, так как он использует его строго для изменения структуры базы данных с течением времени. Если вы не знали, что DHH является создателем Rails.
EDIT 2: Одна мысль, которую я только что имел, что позволило бы вам пропустить понятие использования миграций, если вам было неудобно. Вы можете на 100% полагаться на свой файл db/seeds.rb. Когда вы думаете о «seeds.rb», вы думаете о создании информации, но это не обязательно должно быть так. Вместо того, чтобы просто слепо создавать данные, вы можете проверить, действительно ли соответствующие данные уже существуют, и если это произойдет, то измените и сохраните его, но если он не существует, просто создайте новую запись простой и простой.
дб/seeds.rb
toys = Category.find_by_name("Toys")
if toys then
toys.name = "More Toys"
toys.save
else
Category.create(:name => "More Toys")
end
Run rake db:seeds
и этот код будет работать. Вам просто нужно постоянно обновлять файл seeds.rb каждый раз, когда вы меняете свои данные, чтобы 1) он искал правильное значение данных и 2) он обновлял правильные атрибуты.
В конце концов, нет правильного или неправильного способа сделать это, это все, что работает для вас и вашего рабочего процесса.
Конечно :) В каких семенах вы видите, что вы можете создать все допустимые, созданные действительно в рубиновом файле, а затем запустить сам файл, например. new_categories.rb. Вы можете сделать задачу рейка, чтобы сделать это тоже. –
Я бы использовал только семена для данных, которые должны быть в приложении для его работы на производстве. Возможно, вам лучше использовать приборы для разработки/тестовых данных: http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures – Brian