「Ruby/rails/migration」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→型) |
(→syntax error, unexpected '\n', expecting &. or :: or '[' or '.'なエラーが出たとき) |
||
(同じ利用者による、間の4版が非表示) | |||
行1: | 行1: | ||
+ | ==DBインターフェイス用モデル(マイグレーション)作成== | ||
+ | rails generate scaffold user name:string age:integer | ||
+ | db/migrate/20110603100919_create_users.rbに出来ている | ||
+ | |||
+ | ==DBインターフェイス用モデル(マイグレーション)削除== | ||
+ | rails destroy scaffold user | ||
+ | |||
+ | ==マイグレーション実行== | ||
+ | developmentの場合 | ||
+ | rails db:migrate RAILS_ENV=development | ||
+ | productionの場合 | ||
+ | rails db:migrate RAILS_ENV=production | ||
+ | |||
+ | db/schema.rbができdbにtableが作成される。 | ||
+ | |||
+ | ==マイグレーション実行初期化== | ||
+ | 以下実行後マイグレーション再実行 | ||
+ | rails db:migrate version=0 | ||
+ | |||
+ | ==できたtable== | ||
+ | CREATE TABLE `users` ( | ||
+ | `id` bigint(20) NOT NULL AUTO_INCREMENT, | ||
+ | `name` varchar(255) DEFAULT NULL, | ||
+ | `age` int(11) DEFAULT NULL, | ||
+ | `created_at` datetime NOT NULL, | ||
+ | `updated_at` datetime NOT NULL, | ||
+ | PRIMARY KEY (`id`) | ||
+ | ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 | ||
+ | idやageにunsignedが入ってないのに注意。 | ||
+ | |||
+ | ==httpアクセス== | ||
+ | ttp://localhost:3000/users | ||
+ | |||
==カラムを変更する場合== | ==カラムを変更する場合== | ||
rails g migration ChangeColumnToUser | rails g migration ChangeColumnToUser | ||
作成されたファイルに変更情報を記載 | 作成されたファイルに変更情報を記載 | ||
vi db/migrate/20171107223726_change_column_to_user.rb | vi db/migrate/20171107223726_change_column_to_user.rb | ||
+ | |||
+ | ==カラム追加する場合== | ||
+ | Userテーブルの場合 | ||
+ | $ rails g migration AddColumnToUsers ver:string | ||
+ | |||
+ | $ vi db/migrate/20171112160858_add_column_to_connects.rb | ||
+ | class AddColumnToConnects < ActiveRecord::Migration[5.1] | ||
+ | def change | ||
+ | add_column :connects, :ver, :string | ||
+ | end | ||
+ | end | ||
==型== | ==型== | ||
行23: | 行67: | ||
change_column :users, :rating, :integer , default: 1500 | change_column :users, :rating, :integer , default: 1500 | ||
end | end | ||
+ | |||
+ | |||
+ | ==syntax error, unexpected '\n', expecting &. or :: or '[' or '.'なエラーが出たとき== | ||
+ | 以下のようにカラム名後に","が入ってる可能性があるので | ||
+ | class CreateBattles < ActiveRecord::Migration[5.1] | ||
+ | def change | ||
+ | create_table :battles do |t| | ||
+ | t.integer, :user_id | ||
+ | t.integer :losetimes | ||
+ | t.timestamps | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | 以下のようにカラム名後の,を削除する | ||
+ | class CreateBattles < ActiveRecord::Migration[5.1] | ||
+ | def change | ||
+ | create_table :battles do |t| | ||
+ | t.integer :user_id | ||
+ | t.integer :losetimes | ||
+ | t.timestamps | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | genrateのコマンド時にカラムの間に","を含めるとこうなる |
2017年11月13日 (月) 01:37時点における最新版
目次
DBインターフェイス用モデル(マイグレーション)作成
rails generate scaffold user name:string age:integer
db/migrate/20110603100919_create_users.rbに出来ている
DBインターフェイス用モデル(マイグレーション)削除
rails destroy scaffold user
マイグレーション実行
developmentの場合
rails db:migrate RAILS_ENV=development
productionの場合
rails db:migrate RAILS_ENV=production
db/schema.rbができdbにtableが作成される。
マイグレーション実行初期化
以下実行後マイグレーション再実行
rails db:migrate version=0
できたtable
CREATE TABLE `users` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4
idやageにunsignedが入ってないのに注意。
httpアクセス
ttp://localhost:3000/users
カラムを変更する場合
rails g migration ChangeColumnToUser
作成されたファイルに変更情報を記載
vi db/migrate/20171107223726_change_column_to_user.rb
カラム追加する場合
Userテーブルの場合
$ rails g migration AddColumnToUsers ver:string
$ vi db/migrate/20171112160858_add_column_to_connects.rb class AddColumnToConnects < ActiveRecord::Migration[5.1] def change add_column :connects, :ver, :string end end
型
string : 文字列 text : 長い文字列 integer : 整数 float : 浮動小数 decimal : 精度の高い小数 datetime : 日時 timestamp : タイムスタンプ time : 時間 date : 日付 binary : バイナリデータ boolean : Boolean
サンプル
def change change_column :users, :wintimes, :integer , default: 0 change_column :users, :losetimes, :integer , default: 0 change_column :users, :rating, :integer , default: 1500 end
syntax error, unexpected '\n', expecting &. or :: or '[' or '.'なエラーが出たとき
以下のようにカラム名後に","が入ってる可能性があるので
class CreateBattles < ActiveRecord::Migration[5.1] def change create_table :battles do |t| t.integer, :user_id t.integer :losetimes t.timestamps end end end
以下のようにカラム名後の,を削除する
class CreateBattles < ActiveRecord::Migration[5.1] def change create_table :battles do |t| t.integer :user_id t.integer :losetimes t.timestamps end end end
genrateのコマンド時にカラムの間に","を含めるとこうなる