人生就是不斷學習,調整與更新持續前進。
回上一頁 Link Medium

Rails migration實用筆記整理

Rails 中的 Migration 是 Active Record 提供的一個功能,讓您可以透過 Ruby 程式碼來管理資料庫結構的變更。它就像資料庫的版本控制系統,讓您能夠追蹤、修改和回滾資料庫的變更。

Migration 的優點:

Migration 的常見用法:

  

#production rails / rake 
RAILS_ENV=production rails db:migrate:status
RAILS_ENV=production rails db:migrate
RAILS_ENV=production rails g model xxx yyy
RAILS_ENV=production rails g migration add_{欄位}_to_{表}s {欄位}:{型態}
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rails db:migrate RAILS_ENV=production

# create table
rails g model {model_name} coloumn:boolean

# add_column
rails g migration add_{欄位}_to_{表}s {欄位}:{型態}
rails g migration add_menu_product_source_to_menus menu_product_source:integer
rails g migration add_response_codes_to_user_payments response_codes:jsonb

# change_column ex.
rails g migration change_{欄位}_to_{表}s {欄位}:{型態}
	
# migration寫法 ex.  
def change    
  add_column :menus, :menu_product_source, :integer
  add_column :menus, :menu_contact, :text
  remove_column :menus, :button_color, :string
  remove_column :menus, :button_two_name, :string
  remove_column :menus, :button_two_url, :string
  remove_column :menus, :button_two_color, :string
	 
	# 改 table_name, Ex. users 變 customers
	rename_table :users, :customers  
	
	# drop table_name
	drop_table :users
end

def up
	add_column :users, :email, :string, first: true
end
def down
	remove_column :my_blogs, :column
end

# rails Rollback與注意事項
#提醒:在使用rollback時要切記,必須要在還沒有資料的時候 才能使用, 該表的資料會清空!!
rails db:rollback STEP=1
#上述STEP會依照照migration資料夾從最後順序往上進行rollback

# 操作 migration rollback table 流程
# VERSION 用下面指令查
rails db:migrate:status
rails db:migrate:down VERSION=
rails db:migrate:up VERSION=
or
rails db:migrate