Если я изменю базу данных в живом приложении Ruby on Rails, как мне обновить данные? - PullRequest
0 голосов
/ 20 сентября 2010

Итак, я наконец-то готов позволить некоторым друзьям использовать мое приложение Ruby on Rails, которое я размещаю на Heroku. Я хочу начать получать отзывы, поскольку я все еще развиваюсь.

Что произойдет, если мне нужно каким-то образом изменить базу данных? В базе данных будут данные, поэтому мне придется изменить данные, чтобы они отражали обновления в базе данных, но я не уверен, как это сделать. Спасибо за чтение.

Ответы [ 2 ]

2 голосов
/ 20 сентября 2010

Обычно рекомендуется создать производственную базу данных для реальных пользователей.(Хотя ваше приложение еще находится в стадии бета-тестирования).Наличие отдельной базы данных для производства и разработки значительно облегчит вашу жизнь.

Пример: базы данных разработки часто содержат поврежденные данные, что означает меньше фиктивных данных и т. Д.

  • При изменении структуры данных вы можете выполнять следующие действия:
  • всегда вносите измененияс миграцией (ее легко вернуть, откатить и т. д.)
  • , когда вы вставляете значения в таблицу, создайте миграцию для этого.(Это избавит вас от загрузки одних и тех же данных несколько раз)
  • Когда вы пишете миграцию, всегда убедитесь, что у вас есть правильный метод отката (self.down)
  • Всегда ваши значения по умолчанию

ура

Самера

1 голос
/ 21 сентября 2010

Использовали ли вы миграции для создания своей базы данных?Если это так, то все, что вам нужно сделать, чтобы изменить базу данных, это создать миграцию, которая добавляет / удаляет / изменяет таблицу в базе данных.Например:

class AddMyColumnToMyTable < ActiveRecord::Migration
  def self.up
    add_column :table, :my_column, :string
  end

  def self.down
    remove_column :table, :my_column
  end
end

Затем, чтобы добавить / удалить данные, вы создаете миграцию данных следующим образом:

class AddDataToMyTable < ActiveRecord::Migration
  def self.up
    tables = Table.all
    tables.each do |table|
      table.my_column = 'new value' # Put more meaningful data population here
      table.save!
    end
  end

  def self.down
    tables = Table.all
    tables.each do |table|
      table.my_column = nil
      table.save!
    end
  end
end

Миграция данных может быть настолько простой или сложной, насколько вы этого хотите.быть.Миграция данных - не обязательно лучший способ заполнить вашу базу данных во всех случаях, но для простых случаев они работают действительно хорошо.(Не забудьте обновить любые модели с соответствующими отношениями!)

Если вы не создали свою базу данных с помощью миграций, то изменение данных для отражения обновлений в базе данных может быть выполнено только путем прямого манипулированиябаза данных через SQL.Манипуляции с помощью SQL всегда доступны в приложении на Rails, но миграции предоставляют явные преимущества.Они дают вам возможность фиксировать или откатывать изменения в базе данных структура , а не только данные .И миграция делает работу SQL для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...