ギークなエンジニアを目指す男

機械学習系の知識を蓄えようとするブログ

Ruby on railsでタスクアプリを作成してみる~モデルの作成~

f:id:taxa_program:20170724224720p:plain

実行環境

OS:macOS Sierra Ver.10.12.5

タスク管理アプリ作成

今回も前回同様ドットインストールさんで勉強。

前回記事はコチラ
taxa-program.hatenablog.com

例のごとく、railsで新しいアプリを作成。

$ rails new taskapp --skip-bundle

この辺りはもう手慣れてきた。
ちなみに後半の「–skip-bundle」でbundleのインストールを省略できるみたい。

プロジェクト作成 – Model –

下記コマンドでModelを作成。

$ rails g model Project title

Modelは単数形かつ頭文字は大文字にすることに注意です。

ここでmigrateファイルが作成されるので、前回同様にDBに設定します。

$ rake db:migrate

実際に設定されたどうか確認してみます。(DBの起動)

$ rails db

sqliteが起動するので、そこでスキーマを表示させてみます。

$ sqlite> .schema
> CREATE TABLE "projects" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL);

projectsテーブルが作成されていることが分かります。

このあたりは仕事でOracle使っているので結構理解しやすい。

idやcreated_atなどのデフォルト項目はrailsが勝手に作ってくれるみたい。
DBには欠かせない項目ですからね。

sqliteを終了する場合は下記コマンド

.exit

もう一つ便利なrailsコマンドがあるみたい。

$ rails console
> Loading development environment (Rails 5.1.2)
> irb(main):001:0>

これは作成したDB?アプリ?をインタラクティブに操作することができるみたい。

irb(main):001:0>に続けてDBに値を設定するコマンドを入力してみる。

irb(main):001:0> p = Project.new(title: "p1")
> => #<Project id: nil, title: "p1", created_at: nil, updated_at: nil>

irb(main):001:0> p.save
>    (0.2ms)  begin transaction
>  SQL (1.0ms)  INSERT INTO "projects" ("title", "created_at", "updated_at") VALUES (?, ?, ?)  [["title", "p1"], >["created_at", "2017-07-25 14:58:40.250123"], ["updated_at", "2017-07-25 14:58:40.250123"]]
>   (0.7ms)  commit transaction>
=> true

無事にデータがINSERTされました。

登録されたデータを確認してみる。

irb(main):003:0> p
> => #<Project id: 1, title: "p1", created_at: "2017-07-25 14:58:40", updated_at: "2017-07-25 14:58:40">

作成時間がすごいズレている気がする(今は23時過ぎ)が
まぁ細かいことは気にせずにいきましょう。

また、上記ではProject.newとsaveの2段階実行する必要がありましたが、
それをひとまとまりにしたものが下記。

irb(main):004:0> Project.create(title: "p2")

consoleの終了

irb(main):007:0> quit

今日はこの辺りで。

明日は群馬へ出張です。