「Ruby/rails/migration」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→サンプル) |
(→syntax error, unexpected '\n', expecting &. or :: or '[' or '.'なエラーが出たとき) |
||
(同じ利用者による、間の2版が非表示) | |||
行36: | 行36: | ||
作成されたファイルに変更情報を記載 | 作成されたファイルに変更情報を記載 | ||
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 | ||
==型== | ==型== | ||
行73: | 行84: | ||
def change | def change | ||
create_table :battles do |t| | create_table :battles do |t| | ||
− | t.integer | + | t.integer :user_id |
t.integer :losetimes | t.integer :losetimes | ||
t.timestamps | t.timestamps |
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のコマンド時にカラムの間に","を含めるとこうなる