質問: Ruby on Rails 5のチュートリアルを進めています。 実現したいこと: ### ActiveRecord::Fixture::FixtureError: table "authors" has no column named "address". と表示されているエラーを修正したい。 自分が試した内容: (1)db/2019・・・create_authors.rbの中身を確認。 (2)create_tableが`t.text :adress`になっていた。 (3)`$ rails destroy scaffold author`を実行。 (4)再度、以下を入力。`$ rails g scaffold author user:references name:string birth:date address:text ctype:string photo:binary` (5)`$ rails db:migrate`を実行。 (6)`$ rails db:fixtures:load`を実行。 (7)再度、同じエラー表示される。 create_tableは修正されています。 https://gyazo.com/f02aaccd1f4ab72882c93f85ba15c356 これは何故でしょうか?
回答: 同じ手順を踏むと(5)でエラーが出たので、もしかすると希望に添えない回答になっていることをご容赦ください。エラー文は下記のものでした。 ``` ActiveRecord::StatementInvalid: SQLite3::SQLException: table "authors" already exists: ``` さて、提示しているエラー`ActiveRecord::Fixture::FixtureError: table "authors" has no column named "address".` ですが、これは読んでいただくと分かる通り`authors`テーブルに`address`というカラムが無いことを意味しています。つまりDBに原因がありそうです。 DBにアクセスしてテーブル構造を確認してみましょう。DBにアクセスする方法はいろいろあると思うのですが、例えば`$ rails db`と打つとアクセスできると思います。sqlite3であれば`.schema authors`, MySQLであれば`desc authors`でテーブル構造を確認できます。ここで`adress`と誤字の方が表示されていればこれが原因です。 `$ rails destroy scaffold author`だけではDBまで変更してくれないので、DBの方は`adress`のままということです。テーブルを削除して再度`$ rails db:migrate`を実行すれば、エラーを回避できるはずです。