1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ruby on Rails学習メモ

Last updated at Posted at 2019-12-14

はじめに

  • 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ファイルの修正

db/migrate/yyyymmddhhiiss_create_tasks.db
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は日付です。
それらをstatelimit_dateという変数に宣言してる感じです。

t.timestamps

これもカラムでcreated_atupdated_atなどが入っています。
これは自動的に入るのかな・・・?

テストデータの作成

テストデータがないと、ちゃんと動かないからね。しっかりと作ろうね。

db/seeds.rb
@task              = Task.new
@task.task         = 'task1'
@task.state        = 'todo'
@task.limit_date   = '2018-10-10'
@task.save

はい。


@task = Task.new

これはクラス名Tasknewメソッドの呼び出しをしています。
それを@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の説明ができたらなあと思います。
ではまた!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?