добавление нескольких новых столбцов в рельсовую миграцию с использованием блока - PullRequest
0 голосов
/ 06 ноября 2018

Есть ли лучший способ добавить новые столбцы в таблицу рельсов, чем этот способ

class AddColumnsToUsers < ActiveRecord::Migration[5.1]
  def change
    add_column :users, :first_name, :string
    add_column :users, :last_name, :string
    add_column :users, :contact1, :integer
    add_column :users, :contact2, :integer
    add_column :users, :contact3, :decimal
    add_column :users, :contact4, :integer
    add_column :users, :contact5, :integer
    add_column :users, :contact6, :string
    add_column :users, :contact7, :integer
    add_column :users, :contact8, :integer
    add_column :users, :contact9, :integer
  end
end

Можем ли мы использовать метод change_table и записать их внутри блока? вместо повторения add_column снова и снова

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

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

{
  string: [:first_name, :last_name, :contact6],
  integer: [:contact1 ,:contact2 ,:contact4 ,:contact5 ,:contact7 ,:contact8 ,:contact9],
  decimal: [:contact3] 
}.each do |type, columns| 
  columns.each { |col| add_column :users, col, type }
end
0 голосов
/ 06 ноября 2018

Вы можете добавить несколько столбцов в одну таблицу, как эта

def change
  change_table :users do |t|
    t.string :first_name
    t.string :last_name
  end
end
...