コンパイラかく語りき

import { Fun } from 'programming'

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

どうも!chuckです。

前回に引き続き、RailsでWebアプリケーションを作っていきます。

 

chuckwebtips.hatenablog.com

 

前回は最低限のページのビューを作成しました。なので、今回は裏側のデータベースを作っていきたいと思います。

 

 

データーベースの作成

 えっと、勘違いが無いように言っておくと、ここでいうデーターベースとはまだ中身のない状態です。MySQLSQliteか、みたいな話です。

今回は大規模サイトでもないですし、チュートリアルでも扱ったSQliteを採用。

 

データーベース作成コマンドは以下のとおり。

rake db:create

データーベースに関するコマンドはdbを使うんですね!

ちなみに、僕の場合は「sqliteファイルはすでに存在している」と言われてしまいました…

f:id:chuck0523:20150712113330p:plain

自動生成されたんでしょうか??newしたとき??

 

ちなみに生成された内容は config/database.yml というファイルで確認できます。

f:id:chuck0523:20150712113641p:plain

development, test, productonの3パターンがあり。そうそう、railsでは3つの環境があるんだった!

 

 

テーブルの作成

次にテーブルを作成していきます。初心者にとってはこっちの作業こそがデーターベースの作成って感じですね!

テーブルの作成は以下のコマンドを発行。

rails generate model words

そういやコントローラを作るときもrails generateしましたね。何かを作る時はgenerate…φ(. . )

 

そして作成されたファイルがこちら。db/migrate/(タイムスタンプ)_create_words.rb

f:id:chuck0523:20150712114001p:plain

ここに追記していきます。

 

追記は以下の書式で書きます。

t.(データ型) : (カラム名) (, オプション)

今回は単語帳なので、単語、意味、分類、難易度の4つのカラムを作成しました。

f:id:chuck0523:20150712114437p:plain

 

テーブル作成の準備が整ったので、さっそくコマンドを打ちます。

rake db:migrate...

 

f:id:chuck0523:20150712114633p:plainあれ??構文エラー??

 

どうやらMySQLシンタックスを書いてしまったようです…

 

Railsチュートリアルの6章をチェック。

f:id:chuck0523:20150712114919p:plain

あっ、モデルの作成時に列も指定しちゃえばいいんですね!

というわけで先ほど作ったモデルを削除ヽ(´Д`;)ノ

 

rails destroy model words と入力。

f:id:chuck0523:20150712115028p:plain

 

改めて作成。

rails generate model Word  word:text meaning:text group:text level:integer

とコマンド(どうやらモデル名は先頭が大文字の単数形が良いみたいですね)

f:id:chuck0523:20150712115533p:plain

 

ちなみに、SQLiteのデータ型一覧↓

www.dbonline.jp

 

ファイルを確認すると、きちんとカラムが揃っています!

f:id:chuck0523:20150712115609p:plain

 

改めて rake db:migrate

f:id:chuck0523:20150712115657p:plain

できた!ヽ(=´▽`=)ノ

 

テーブルの確認

作ったテーブルを確認してみましょう♪

Railsコンソールから確認します。ターミナルでrails console --sandboxと入力。(sandboxはお試しモードみたいな感じで、加えた変更が保存されないモードになります。つまりデータを作成してもコンソールを閉じると破棄されます。)

 

さっそく空のデータを1件作成してみます。

f:id:chuck0523:20150712120750p:plain

できたー!

特にNotNull(空欄はNG)などの制約はないので、ふつうに作成できました。

 

しかし!ここで問題が…

 

よし!次は実際にデータを作ってみるぞ♪

 

ん…?ロシア語のキリル文字って認識されるのか…???(´Д`;)

キリル文字は、日本語と同じく文字コード的にちょっと特殊。

 

1.まず英単語を入れてみる。

f:id:chuck0523:20150712121127p:plain

まあ普通に入る。

 

2.ロシア語入れてみる。

入力すると、

f:id:chuck0523:20150712121238p:plain

!??

エンターを押して確定すると、

f:id:chuck0523:20150712121320p:plain

空文字列になっている…(´;ω;`)

 

まさかこんなとこで引っかかるとは…(次回に続く)