레일에서 테이블 이름 바꾸기
테이블 이름을 바꾸고 싶습니다 ... (모든 테이블)
이 코드 줄을 사용해 보았습니다.
ActiveRecord::ConnectionAdapters::SchemaStatements.rename_table(old_name, new_name)
이상한 것이 있습니다. 처음으로 작동한다는 것을 알고 있지만 이제 다음과 같은 오류가 발생합니다. ActiveRecord :: ConnectionAdapters :: SchemaStatements : Module에 대한 정의되지 않은 메소드`rename_table '
설정해야 할 것이 있습니까?
일반적으로 마이그레이션에서 다음과 같은 작업을 수행합니다.
class RenameFoo < ActiveRecord::Migration
def self.up
rename_table :foo, :bar
end
def self.down
rename_table :bar, :foo
end
end
Rails> = 3.1에서는이 change
방법을 사용할 수 있습니다 .
class RenameOldTableToNewTable < ActiveRecord::Migration
def change
rename_table :old_table_name, :new_table_name
end
end
.rename_table
클래스 메소드가 아닌 인스턴스 메소드이므로 호출 Class.method
이 작동하지 않습니다. 대신 클래스의 인스턴스를 작성하고 인스턴스에서 다음과 같이 메소드를 호출해야합니다 Class.new.method
.
[편집]이 경우 ActiveRecord::ConnectionAdapters::SchemaStatements
클래스도 아닙니다 (캠에서 지적한 바와 같이). 위에서 말한대로 인스턴스를 만들 수도 없습니다. 그리고의 cam 예제를 사용해도 예외가 발생 class Foo; include ActiveRecord::ConnectionAdapters::SchemaStatements; def bar; rename_table; end; end;
해도 작동하지 않습니다 rename_table
.
반면에, ActiveRecord::ConnectionAdapters::MysqlAdapter
이다 클래스, 그것은 가능성이 당신이 (당신이 사용중인 데이터베이스에 따라, 또는 SQLite는 또는 PostgreSQL의) 테이블의 이름을 변경하는 데 사용해야 할 것이 클래스입니다. 이제는을 ActiveRecord::ConnectionAdapters::MysqlAdapter
통해 이미 액세스 할 수 Model.connection
있으므로 Model.connection.rename_table
애플리케이션의 모든 모델을 사용하여 완전히 수행 할 수 있어야 합니다. [/편집하다]
그러나 테이블 이름을 영구적으로 바꾸려면 마이그레이션을 사용하여 테이블을 사용하는 것이 좋습니다. Rails를 사용하면 데이터베이스 구조를 쉽고 편리하게 조작 할 수 있습니다. 방법은 다음과 같습니다.
# Commandline
rails generate migration rename_my_table
# In db/migrate/[timestamp]_rename_my_table.rb:
class RenameMyTable < ActiveRecord::Migration
def self.up
rename_table :my_table, :my_new_table
end
def self.down
rename_table :my_new_table, :my_table
end
end
그런 다음, 당신은 당신과 함께 마이그레이션을 실행할 수 있습니다 rake db:migrate
(부르는 self.up
방법), 사용 rake db:rollback
(호출 self.down
마이그레이션을 실행 취소).
ActiveRecord::Migration.rename_table(:old_table_name, :new_table_name)
참고 URL : https://stackoverflow.com/questions/4631630/renaming-table-in-rails
'Programming' 카테고리의 다른 글
ConfigParser의 목록 (0) | 2020.06.08 |
---|---|
파이썬의 URL에서 이미지 데이터를 어떻게 읽습니까? (0) | 2020.06.08 |
Swift에서 AVPlayerViewController (AVKit)로 비디오를 재생하는 방법 (0) | 2020.06.08 |
팬더 데이터 프레임의 열 정규화 (0) | 2020.06.08 |
잔가지 템플릿으로 현재 URL을 얻으시겠습니까? (0) | 2020.06.08 |