Похоже, вы будете добавлять, изменять или удалять данные по пути, который будет смешиваться с другими данными. Итак, seed.rb отсутствует. Вам нужно использовать migrations . Таким образом, вы можете искать и идентифицировать данные, которые вы хотите изменить, с помощью последовательного процесса, для которого миграции предназначены именно для этого. В противном случае, я думаю, что вам лучше всего изменить данные вручную через консоль rails.
РЕДАКТИРОВАТЬ: хороший пример будет следующим.
Вы используете Capistrano для управления развертыванием. Вы хотите добавить новую категорию «Игрушки» в свою систему. Затем в файле миграции вы бы добавили Category.create(:name => "Toys")
или что-то похожее в вашу функцию миграции (я забыл, как это теперь называется в Rails 3.1, хотя я знаю, что есть только один метод), запустите rake db:migrate
локально, протестируйте свои изменения, зафиксируйте их, затем, если это приемлемо, разверните его, используя cap:deploy
, и это запустит новую миграцию для вашей производственной базы данных, вставьте новую категорию и сделайте ее доступной для использования в развернутом приложении.
Этот пример в стороне, он действительно зависит от вашего рабочего процесса. Если вы считаете, что добавление новых данных с помощью миграции не повлияет на ваше приложение, сделайте это. Я скажу, что DHH (David Heinemeier Hansson) не является его поклонником, поскольку он использует его строго для изменения структуры базы данных с течением времени. Если вы не знали, DHH является создателем Rails.
РЕДАКТИРОВАТЬ 2:
У меня только что возникла мысль, которая позволила бы вам отказаться от использования миграций, если вам это не нравится. Вы можете на 100% полагаться на файл db / seeds.rb. Когда вы думаете о "seed.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
Запустите rake db:seeds
, и этот код запустится. Вам просто нужно постоянно обновлять файл seed.rb каждый раз, когда вы меняете свои данные, так что 1) он ищет правильное значение данных и 2) обновляет правильные атрибуты.
В конце концов, нет правильного или неправильного способа сделать это, это просто то, что работает для вас и вашего рабочего процесса.