女エンジニアの私生活

初心者女エンジニアの私生活。たまに技術記事も。

『Ruby on Rails 5 アプリケーションプログラミング』でRails学習 その4(モデル)

 

寒いんだか寒くないんだか。

東京はそんな日が続いてますね。どうもモックです。

昨日、初めて生命保険の営業を受けて困ってます。

(よくある知り合いからパターン

今度会って具体的な提案をさせてくれないかと。

知り合いがだいぶ年上のこともあり、ひるんでとりあえずOKしてしまいました。。)

そして、自分自身、業界のことも少し分かるし、

中には本当に人のことを思って生命保険をおすすめしてくれる

営業さんもいるので(当たり前か)、とっっても複雑!!!!

まあ今生命保険自分では入ってないし、

いい歳なのでそろそろ真剣に考える時期なのかな~と...。

てことで!いっそ思い切って保険ショップ行ってみて!勉強してこようかなと!

もしちゃんと行けたらそれだけの記事書きます!!!!!

 

悩み爆発してごめんなさい。

てことで。今日も続きをやっていきます!!!

前回の記事はコチラ↓↓

 

moqmog.hatenablog.com

 

今日は書籍のP44から、ついにMVCModelについてやっていくみたいですね!

 

2.4 モデルの基本(P44~)

 

「2.4.1 O/Rマッパーとは」、「2.4.2 データベース接続の設定」

今回は特に作業を行っていないので割愛します。

 

2.4.3 モデルクラスの作成(P48~)

 

 

さて、O/Rマッパーについても学んだところで、

やっとこさモデルクラスを作成します。

今回は「書籍情報を表示する」というサンプルのようですね。

では、rails generateコマンドを実行してみます。

実行する際は、作成したアプリケーションのディレクトリまで移動しますよ。

(書籍どおりに進めている人は”railbook”という名前ですね。)

 

f:id:moqmog:20171111153022j:plain

 

はい、実行されました!

それぞれのディレクトリを見てみましょう。

 

\railbook\app\models

f:id:moqmog:20171111153557j:plain

 

\railbook\db\migrate

f:id:moqmog:20171111153726j:plain

 

\railbook\test\fixtures

f:id:moqmog:20171111153911j:plain

 

\railbook\test\models

f:id:moqmog:20171111154053j:plain

 

それぞれしっかり出来ていました!

 

2.4.4 マイグレーションファイルによるテーブルの作成(P50~)

 

 

先ほど作られたマイグレーションファイルを確認します。

 

f:id:moqmog:20171111154425j:plain

 

こんな感じで「\railbook\db\migrate」の下に、

恐らく実行した日付的な名前で作られていますね。

ファイルをひらいてみます。

 

f:id:moqmog:20171111154613j:plain

 

なるほど。このコードをみると、

「ISBN番号、タイトル、価格、出版元、発行日、ダウンロード可能かどうか」

という情報を格納するテーブルが作られそう!ってことは

直感的に考えることができますね。

ではこのマイグレーションファイルを実行してみましょう。

 

f:id:moqmog:20171111155042j:plain

 

無事booksテーブルができました!

これだけでテーブルが出来るなんて、感動です。

 

2.4.5 フィクスチャによるテストデータの準備

 

 

今のままでは作成されたテーブルには何の情報もないので

テストデータを入れておくようです。

 

f:id:moqmog:20171111155304j:plain

 

※ちなみに書籍ではこれで10件ほどのデータが展開されると書いてありましたが、

どういうわけか私は2件しか出来ませんでした...

(次の2.4.6 で詳しく説明します)

 

2.4.6 補足:データベースクライアントの起動

 

 

rails dbconsoleコマンドで、SQLiteクライアントを起動できるみたいですね。

これはもちろんやってみましょう。中のデータがわかります。

まず、「rails dbconsole」でクライアントを起動。

次に、「.schema books」で、「booksテーブル」の構造がどのようになっているか調べることができます。列名や、データ型がわかりますね。

 

f:id:moqmog:20171111155713j:plain

 

...ん?んん?

わかりますでしょうか。

私は次に「select * from books;」と実行してみているんですが、

(SOLiteもoracleやpostgreSOLとそんなに変わらないのかな)

そのあとに出力されているのが、中に入っている「本」情報の詳細です。

え!?これで全部!?しかも書籍名とかMy Stringとかてきとー!!

しかも全く同じ書籍情報2冊分しかないやんけ!!

にわかに信じられず、カウントしてみました。

モックSQLiteさんや、booksテーブルには何冊の情報があるんだ~い?」

 

f:id:moqmog:20171111160402j:plain

 

SQLite「2」

お、おう...。わかったよ..。

とりあえずほっとくことにしました。

 

モデル、長くなるので次の記事に区切ります!