나는 이미 많은 데이터베이스 (약 40 개)로 데이터베이스를 정의했다. 이제는 각 테이블에 특정 열을 추가하려고합니다. 예를 들어 created_by
및 updated_by
이되도록합시다.모든 테이블에 특정 필드가 포함되도록 지정하려면 어떻게해야합니까?
마이그레이션을 거치지 않고 수동으로 업데이트하지 않고도이 작업을 수행 할 수있는 방법이 있습니까?
나는 당신이 마흔 마이그레이션을 필요가 없습니다 레일 2.3.8
나는 이미 많은 데이터베이스 (약 40 개)로 데이터베이스를 정의했다. 이제는 각 테이블에 특정 열을 추가하려고합니다. 예를 들어 created_by
및 updated_by
이되도록합시다.모든 테이블에 특정 필드가 포함되도록 지정하려면 어떻게해야합니까?
마이그레이션을 거치지 않고 수동으로 업데이트하지 않고도이 작업을 수행 할 수있는 방법이 있습니까?
나는 당신이 마흔 마이그레이션을 필요가 없습니다 레일 2.3.8
당신은 하나의 마이그레이션을 생성 할 수 있으며이 코드를 넣어 : 당신은 예를 들어, 하나의 마이그레이션을 할 수 있습니다. 그것은 모든 테이블의 배열 (Rails가 자동으로 생성하는 "schema_migrations"테이블 빼기)을 제공하고 각 테이블에 열을 추가합니다. 이 질문/대답은 모든 테이블의 인코딩을 해결하기 위해 나에게 도움이
tables = ActiveRecord::Base.connection.tables - ["schema_migrations"]
tables.each do |table|
add_column table, :created_by, :integer
end
을 사용하고 있습니다.
def self.up
%w(table1 table2 table3).each do |table_name|
ActiveRecord::Base.connection.execute "ALTER TABLE #{table_name} ADD created_by int, updated_by int"
end
end
감사합니다. 아직도, 나는 다른 해결책을보다 깨끗하고 단순하게 만든다. – Calin
... 빠른 답변
class FixCharacterSet < ActiveRecord::Migration
def up
tables = ActiveRecord::Base.connection.tables - ["schema_migrations"]
tables.each do |table|
ActiveRecord::Base.connection.execute "ALTER TABLE #{table} CONVERT TO CHARACTER SET utf8 COLLATE 'utf8_general_ci';"
end
end
def down
end
end
이것은 정확히 내가 찾고있는 것입니다. – Calin
Greate! 깨끗하고 쉽게 :) – fl00r
@Dylan, what 새 테이블을 만들면 레일이 "created_at"및 "updated_at"을 추가 할 때 자동으로 새 테이블을 만들 때이 열이 추가되어야합니다. –