昨日まではわからなくなるとモデルを新しく作り直していたので、どうすべきか確認しておく。とりあえずscaffoldで適当なMVCを作ってマイグレーション。
$rails g scaffold PrctModel name:string level:integer
$rake db:migrate
このときのマイグレーションファイルはこんな感じでした。
class CreatePrctModels < ActiveRecord::Migration
def change
create_table :prct_models do |t|
t.string :name
t.integer :level
t.timestamps
end
end
end
さて、コンソールから適当にデータを突っ込んでみます。
さて、PrctModel.allとかすると正しくレコードが登録されていることが確認できました。
ここで、levelをlevel_singに変更、カラムlevel_danceを追加してみます。してみますってこの時点でどうやるかわかってないんですが。
ふふーん。マイグレーションファイルをコマンドで作ればいいみたい。多分コンソール上やマイグレーションファイルを書き換えても操作できちゃうんでしょうけど、今回はスルーしておきます。
追加は次のコマンド。クラス名としてAddColumn[変更元カラム名]To[テーブル名]、その後に[変更先カラム名]を入れれば良いみたい。Columnは省略できるっぽいけど、一応書いておきます。
カラム名の変更は下記の通り。
参考:
【Rails】migrationのchangeとup/downって何が違うの?
[14] pry(main)> prct = PrctModel.new(name: 'Suzuka', level: 10)
[15] pry(main)> prct.save
もしくは、
[17] pry(main)> prct = PrctModel.create(name: 'Suzuka', level: 10)この辺もずっと前に意味わからず打ち込んでいたけど、慣れというのは恐ろしいもので、説明はまだちゃんとできないけど身体が少しずつ動くようになってきているかも。
さて、PrctModel.allとかすると正しくレコードが登録されていることが確認できました。
ここで、levelをlevel_singに変更、カラムlevel_danceを追加してみます。してみますってこの時点でどうやるかわかってないんですが。
ふふーん。マイグレーションファイルをコマンドで作ればいいみたい。多分コンソール上やマイグレーションファイルを書き換えても操作できちゃうんでしょうけど、今回はスルーしておきます。
追加は次のコマンド。クラス名としてAddColumn[変更元カラム名]To[テーブル名]、その後に[変更先カラム名]を入れれば良いみたい。Columnは省略できるっぽいけど、一応書いておきます。
$rails g migration AddColumnLevelDanceToPrctModel level_dance:integerマイグレーションファイルは上のコマンドからいい感じに作ってくれました。
class AddColumnLevelDanceToPrctModel < ActiveRecord::Migration
def change
add_column :prct_models, :level_dance, :integer
end
end
これでマイグレーションしてコンソールで確認したら、確かにカラムが増えていました。
カラムの削除は次の通り。モデル名の前置詞がToではなくてFromです。
$rails g migration RemoveColumnLevelFaceFromPrctModel level_face:integer
こちらもマイグレーションファイルはいい感じに作ってくれますが、:integerとかの変数型はちゃんと記さないとまずそうです。変数型を書かずにマイグレーションファイルを作ったところ、ファイル内で変数型が:stringになっていて、削除後にロールバックすると変数型が:stringになってしまいそう。
カラム名の変更は下記の通り。
$rails g migration RenameColumnLevelToPrctModel level_sing
class RenameColumnLevelToPrctModel < ActiveRecord::Migration
def change
rename_column :prct_models, :level, :level_sing
end
end
この、マイグレーションファイル内でテーブル名が複数形になる意味がよくわからない…。(単数形で試したらエラーになった。)
参考:
【Rails】migrationのchangeとup/downって何が違うの?
0 件のコメント:
コメントを投稿