「Ruby/rails/migration」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→サンプル) |
|||
行56: | 行56: | ||
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月12日 (日) 01:01時点における版
目次
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
型
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のコマンド時にカラムの間に","を含めるとこうなる