読者です 読者をやめる 読者になる 読者になる

コンパイラかく語りき

import { Fun } from 'programming'

文系プログラマーがRailsでロシア語アプリケーションをつくる⑥

どうも!chuckです。

引き続きロシア語単語帳を作っていきます。

 

chuckwebtips.hatenablog.com

 

前回はモデルのカラムを追加したり削除したりしました。つまり、データを登録する下準備が整いました。

今回は思う存分データを登録していきますヽ(=´▽`=)ノ

 

 

データを一括登録したい

単語帳のデータという性質上、データは最初から全て揃っている必要があります。つまり、こういうデータを登録しますよというリストが欲しいところ。

その願いを実現してくれるのがseeds.rbファイルです。

 

こちらはデフォルトで生成されています。Rails newしたときかな???

f:id:chuck0523:20150718231624p:plain

db/seeds.rb

 

そこに追加したいデータを羅列していきます。

f:id:chuck0523:20150718231813p:plain

 

seeds.rbファイルを実行するにはrake db:seedコマンドを実行します。

 

f:id:chuck0523:20150718232034p:plain

あれ??

rake aborted! とのこと。つまりエラー。何かがおかしい。

 

3時間ハマった末に

解決に3時間かかりりましたw

結論から言うと、前回のデータ構造の作成の時点でミスってました。単語の品詞という意味で、カラムに「class」という名前をつけましたんですが、どうやらこれが本来のclassと衝突してたっぽい。

つまり、ruby予約語をカラムに使うのは避けたほうが良いかも???

 

stackoverflow.com

こちらの回答のおかげで解決することができました。さすがStackOverFlow ・゚・(つД`)・゚・ 

 

f:id:chuck0523:20150718232530p:plain

っていうか、これ見て欲しいんですが!回答者の名前がキリル文字です。ロシア語圏の方なんですかね????

ロシア語単語帳の作成を、ロシア語圏の方に助けられるなんて…不思議な縁を感じます(´ω`)

 

Railsってけっこうゆるい??

いやあ、3時間ハマっちゃいました。そもそもカラムを作る時点ではエラーは起きなかったんですよ。たぶん文字列化してあったから無条件でパスしてしまったんでしょうね。

'class' ←文字列化

 

それがseeds.rbでのデータ登録をきっかけに、classの衝突が起こってしまったんではないでしょうか???

 

そもそもマイグレーションファイルの削除とかもゆるいんですよね。

例えば、存在しないaaaという名前のマイグレーションファイルを削除しようとします。すると、

f:id:chuck0523:20150718233411p:plain

エラーメッセージなどは出ず。

まるでaaaというファイルが存在していて、削除が成功したかのよう…(;・∀・)

 

Railsってカンタンだけどけっこうゆるいところもあるのかな??と思ったりしました。

 

データの登録に成功

なにはともあれ、データの一括登録に成功しました!

f:id:chuck0523:20150718233825p:plain

登録した9件のデータがしっかりと表示されています!

 

 

参考にしたサイト様

www.rubylife.jp