RailsGuides6章でrails generateみすったのでやり直し方調べた

RailsGuidesなどのチュートリアルと進めていて困るのが、タイプミスなどで本来作りたい何か以外をつくってしまったとき。あまりやり直し方とか消し方って記載されていないですよね。にもかかわらず、RailsGuidesの6章でモデル生成するときにタイプミスをやっちまったので、やり直し方を調べました。

スポンサーリンク

rails generate XXX

rails generateはモデルとかコントローラを作る時に用いるコマンドです。今回は既存モデルとリレーションを持ったモデルを作りたかったんですけど、referencesとするべきところをreferenceとしてしまいました。そしてrails db:migrateしたらしっかり怒られました。

[vagrant@localhost blog]$ rails g model Comment commenter:string body:text article:reference
      invoke  active_record
      create    db/migrate/20180715125014_create_comments.rb
      create    app/models/comment.rb
      invoke    test_unit
      create      test/models/comment_test.rb
      create      test/fixtures/comments.yml
[vagrant@localhost blog]$ rails db:migrate
== 20180715125014 CreateComments: migrating ===================================
-- create_table(:comments)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:
undefined method `reference' for #<ActiveRecord::ConnectionAdapters::SQLite3::TableDefinition:0x00005616fc129da0>
Did you mean?  references
/home/vagrant/rails/blog/railsguides/blog/db/migrate/20180715125014_create_comments.rb:6:in `block in change'
/home/vagrant/rails/blog/railsguides/blog/db/migrate/20180715125014_create_comments.rb:3:in `change'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Caused by:
NoMethodError: undefined method `reference' for #<ActiveRecord::ConnectionAdapters::SQLite3::TableDefinition:0x00005616fc129da0>
Did you mean?  references
/home/vagrant/rails/blog/railsguides/blog/db/migrate/20180715125014_create_comments.rb:6:in `block in change'
/home/vagrant/rails/blog/railsguides/blog/db/migrate/20180715125014_create_comments.rb:3:in `change'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
 


rails destroy XXX

一方、rails destroyはgenerateした何かを削除できるコマンドです。

[vagrant@localhost blog]$ rails destroy model Comment
      invoke  active_record
      remove    db/migrate/20180715125014_create_comments.rb
      remove    app/models/comment.rb
      invoke    test_unit
      remove      test/models/comment_test.rb
      remove      test/fixtures/comments.yml
[vagrant@localhost blog]$ 

そしてもう一度、rails generate!

[vagrant@localhost blog]$ rails g model Comment commenter:string body:text article:references
      invoke  active_record
      create    db/migrate/20180715125717_create_comments.rb
      create    app/models/comment.rb
      invoke    test_unit
      create      test/models/comment_test.rb
      create      test/fixtures/comments.yml
[vagrant@localhost blog]$ 

ミスを取り戻せたのでチュートリアルを進めていけますね。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク