主に子育て、ダイエット、高崎周辺、B'zについて書いています。

51ch.com

ブログTips

railsでオブジェクトをnewできないエラー

投稿日:2016/08/21 更新日:

広告


<事象>
rails consoleから単純にnewしたら以下のエラーが表示される。

なんでnewが、undefindメソッドなんだろうと悩む。

skillsテーブルの定義内容は以下です。
mysql> show columns from skills;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| class | varchar(255) | YES | | NULL | |
| change_flg | tinyint(1) | NO | | 0 | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
8 rows in set (0.01 sec)

#原因
カラム名が予約語
少し慣れている人であれば上のテーブル定義からすぐにわかると思いますが、
classがrubyの予約語です。
予約後をカラム名として利用すると発生するうようです。

#対応
テーブル定義を変更しましょう。
・マイグレーションファイルを作成

・マイグレーションファイルの中身を編集

・migrateの実行
$ bundle exec rake db:migrate

rails console上で再度newしてみると

ちゃんとnewできました!初心者は、こんなのでも時間をロスしてしまいます。

広告

<参考>
[StackOverflow](http://stackoverflow.com/questions/32761577/rails-dbseed-error-undefined-method-finder-needs-type-condition-for-nilnil)
[予約後一覧](http://www.trail4you.com/TechNote/Ruby/Rails_keyword_list.html)

supersoftwareでエンジニア募集中

広告

-ブログTips
-

Copyright© 51ch.com , 2019 All Rights Reserved Powered by STINGER.