はじめに
- macOS Mojave 10.14.6
- Ruby 2.6.5p114
- rake 13.0.1
- Bundler version 2.0.2
- rbenv 1.1.2
- rails 6.0.1
- sqlite3 1.4
たくさん学べたので忘れないうちに書きます。
環境構築について
環境構築はこちらを参考にしてください。
作りたいもの
タイトルにもある通り、ToDoアプリを作りたい。
なぜToDoアプリなのかというと・・・
CRUD
を学ぶのに最適だと思ったからです(小並)
CRUDってなんやねん!
そこから入るのかよって思われるかもしれませんが、そこから入らないとわからなかった人間です。
どうも。
CRUDというのはとある英語の頭文字を取っています
C = Create(作成)
R = Read (読み取り)
U = Update(更新)
D = Delete(削除)
となっております。
これを学ぶのが前述通り、ToDoアプリとされています。
テーブルの準備
事前にbundle exec rake db:create
でデータベースの作成をしておいてください。
では、早速入っていきましょう
まずはモデルの準備です。
# modelの生成
$ bundle exec rails g model task
で生成されます。
migrationとは?
migration
とは英語で「移住、移動」といった意味があるみたいです。
Ruby on Railsでいうmigration
にはこういう機能があります
SQLを書くことなくRubyでデータベース内にテーブルを作成することができる機能
大雑把にいうとこんな感じで理解しています。
modelとは?
MVCという言葉を聞いたことがあるでしょうか?
UIが持つアーキテクチャの1つです。
M = Model
V = View
C = Controller
ですね。
これも大雑把に説明していきます
Model
アプリケーションが扱う領域のデータと引き継ぎ(例:ショッピングの合計額や送料の計算など)
View
Controllerから情報をもらってそれをユーザーに見やすい形で出力します。
また、ユーザーが入力したものをControllerへ渡す機能もあります。
Controller
Modelから情報を取得して、それをViewに渡します。
また、Viewから入力されてきたデータをModelへ渡す機能もあります。
大雑把だけどこんな感じだと思います。
migrationファイルの修正
class CreateTasks < ActiveRecord::Migration[6.0]
def change
create_table :tasks do |t|
t.text :state
t.text :task
t.date :limit_date
t.timestamps
end
end
end
こんな感じで修正しています。
def change
defで、change
というメソッドを定義します。
create_table :tasks do |t|
はtasks
というテーブルを作ってます。
t.text :state
t.text :task
t.date :limit_date
Railsには設定できるカラムがいくつかあります
t.string
は文字列(255文字)、それ以上がt.text
になっています。
t.date
は日付です。
それらをstate
やlimit_date
という変数に宣言してる感じです。
t.timestamps
これもカラムでcreated_at
やupdated_at
などが入っています。
これは自動的に入るのかな・・・?
テストデータの作成
テストデータがないと、ちゃんと動かないからね。しっかりと作ろうね。
@task = Task.new
@task.task = 'task1'
@task.state = 'todo'
@task.limit_date = '2018-10-10'
@task.save
はい。
@task = Task.new
これはクラス名Task
にnew
メソッドの呼び出しをしています。
それを@task
に入れて以下の変数につけてる感じです。
@task.task = 'task1'
@task.state = 'todo'
@task.limit_date = '2018-10-10'
これはMigrationファイルで宣言したtask
state
limit_date
にデータを格納していってる感じです。
最後に
@task.save
でデータベースの保存?格納してる感じです。
migrationの実行/seeding
$ bundle exec rake db:migrate
$ bundle exec rake db:seed
# もし間違えた場合は・・・
$ bundle exec rake rollback
seedingって何ですか?
seeding
は英語でいうと「種まき」という意味らしい。そのままだね。
これは、seeds.rb
で書いたコードが$ bundle exec rake db:seed
で実行される形になります。
まとめ
とりあえず、長くなりそうなのでここまでとします。
次回はコントローラーの生成、RESTfulの説明ができたらなあと思います。
ではまた!