Подтвердить что ты не робот

Добавление нескольких столбцов в одну миграцию

Сценарий: у нас уже есть модель документа, и мы хотим добавить

  • общественности
  • частным

или больше столбцов с использованием одной миграции.

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

  • Это обычная передовая практика, или есть лучший способ?
  • Если это способ сделать это, каково было бы правильное имя для этой миграции?
4b9b3361

Ответ 1

Откат миграции и повторная редактирование безопасны только в том случае, если эта миграция является локальной и не была вытолкнута в какой-либо репозиторий. Редактирование переноса, которое другие применили, может вызвать проблемы.

Самый безопасный способ добавления столбцов в существующую таблицу - это просто создать новую миграцию:

rails g migration add_public_and_private_to_document public:string private:string

Если вы используете соглашение об именах add_[column_names]_to_[model], рельсы выработают соответствующую таблицу и создадут требуемую миграцию.

Читайте здесь для получения дополнительной информации: http://guides.rubyonrails.org/migrations.html

Ответ 2

@Путь к компьютеру - это просто. Если после миграции вам нужно будет обновить две вещи.

Итак, скажем, у меня есть существующий эшафот под названием myapp, и я хочу добавить еще больше полей на этот эшафот. Три дела.

Добавляемое поле:

= >

1) rails g migration add_term_count_and_current_record_count_and_previous_record_count_to_myapp term_count:integer , current_record_count:integer , previous_record_count:integer

= >

2) Update views, example updating _form.html.rb

Мне нужно было добавить:

<div class="field">
    <%= f.label :current_record_count %><br>
    <%= f.number_field :current_record_count%>
  </div>

 <div class="field">
    <%= f.label :current_record_count %><br>
    <%= f.number_field :previouse_record_count%>
  </div>

  <div class="field">
    <%= f.label :term_count  %><br>
    <%= f.number_field :terminations_count %>
  </div>

= >

3) Update Controller : 

Новые версии рельсов имеют так называемый сильный параметр, чтобы хакеры не могли передавать произвольные значения полей столбца. Короче говоря, обновите метод с новыми именами полей, иначе вы не увидите новые поля.

 # Never trust parameters from the scary internet, only allow the white list through.

def vendor_file_params
    params.require(:vendor_file).permit(:name, :run_date,  :term_count ,
    :current_record_count , :previous_record_count ,:comments)   
end
end

Ответ 3

Вы можете выполнить команду следующим образом:

рельсы g документ миграции public: строка private: строка