0
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 3 years have passed since last update.

アプリ開発実践入門7 Modelとデータベース モデルの基本

Posted at

今日の教科書

#モデルを作る
rails generate model モデル名 設定項目:モデル作成のコマンド
基本モデル名とクラス名とファイル名は大文字小文字の差はあれど一緒である。

##コマンドで作成されるファイルについて
モデル名.rb:モデルのソースコード
生成日時_create_モデル名の複数形.rb:マイグレーションというデータベースの更新に関する処理のためのファイル
モデル名_test.rb:テストのためのソースコード
モデル名の複数形.yml:テストに関する情報を記述したファイル

##モデルのソースコード

class モデル名 < ApplicationRecord
end 

最初の記述内容。ApplicationRecordというクラスが継承されている。モデルは全てこれを継承している。ApplicationRecordは最初から組み込まれているものではない。application_record.rbファイルが作成されていて、ここに書かれている。
このクラスはActiveRecord:Baseというクラスを継承している。これはモデルの元になっている機能で含み、これの機能のクラスを使っている。

##マイグレーションの実行
データベースを使うためにモデルに必要なテーブルをデータベースに用意する作業が必要。
マイグレーションはデータベースのアップデート作業であり、情報を用意しておきこれを元に
最新の状態に更新する。

rails db:migrate:マイグレーションのコマンド。これでなくブラウザのエラーメッセージと一緒に出るボタンを押してもできる。

###マイグレーションファイルについて

class クラス名 < ActiveRecode::Migration[6.0]
  def change
    create_table :テーブル名 do |変数|
    処理
    end
  end
end

自動生成。

##シードを作る
ダミーのデータを用意してデータベースの動きを把握する。そのためシードに記述する。

rails db:seedseeds.rbをシードとして実行するコマンド。データベースにデータが追加される。

##コントローラーを作成

rails generate controller モデル名複数形 アクション:モデルのコントローラーとアクションとテンプレートが作成される。モデルは単数系、コントローラーは複数系という命名規則に則る。

###アクションでデータを表示する

class PeopleController < ApplicationController

  def index
    @msg = `モデル名 data.`
    @data = モデル名.all
  end

end

変数 = モデル名.all:allはモデルのデータを全て、配列のようなものにして取り出すメソッド。
得られるものの正確な名称はActiveRecord::Relationというオブジェクト。
Enumerableという機能を使って配列のように値を順番に取り出せるようにしてくれる。

##テンプレートの作成
繰り返し処理を使って順にデータを取り出していく。

<% @data.each do |obj| %>
  objを処理
<% end %>

@dataから順にデータを取り出して変数objに入れて処理を実行している。

モデルを利用してデータベースから取り出されるデータは全てモデルのインスタンス。
テーブルに用意されている項目で保管されていて、全て取り出せる。

<td><%= obj.id %></td>
・・・

モデル作成時に自動的に生成される項目がある。
id:データにつけられる番号
created_at:データの作成日時
updated_at:データの最終更新日時

##ルーティグの設定
ジェネレータコマンドで作ると自動で生成される。

0
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
0
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?