ADACHI TECH BLOG

ADACHI TECH BLOG

フリーランスwebエンジニアを目指す22歳の発信ブログ

【Rails初心者向け】Modelの操作法を解説

こんにちは、足立です!
今回はRailsのModelについて解説させていただきたいと思います。


Modelとは?

f:id:adachi0055:20190610113427j:plain
フリー素材モデルのアドリアーノ・リマさん

前回の記事でコントローラ(Controller)とビュー(View)のお話をしましたが、Railsアプリにはもう一つ、モデル(Model)と呼ばれる重要な要素があります。
ここで一度、それぞれの役割について整理してみましょう。

名前 役割
Model データベースとのやり取りを行う
View htmlやcssの指示通りに画面を表示させる
Controller ModelとViewに指示を出す

つまりModelとは、Controllerの指示を受けてデータベースとやり取りを行うものです。
モデルを作成することで、twitterを例にすると以下のようなことが可能となります。
・入力した値で新しいツイートを作成する
・あるツイートの情報を取得する
・あるツイートを削除する

それでは、実際にRailsでのModelの操作を学んでいきましょう!

Modelの操作

Modelの作成法

今回は例として、tweetモデルを作成します。

ターミナル

$ cd ~~~               #モデルを作成したいrailsアプリに移動しておく
$ rails g model tweet  #モデル名は単数形で。頭文字は大文字小文字どちらでも可

上記コマンドを実行すると、db/migrate内にマイグレーションファイル(作成日時_create_tweets.rb)が生成されます。
マイグレーションファイルを編集していきましょう。

db/migrate/マイグレーションファイル

class CreateTweets < ActiveRecord::Migration[5.2]
  def change
    create_table :tweets do |t|
      t.text :body              #text型のbodyカラムを追加

      t.timestamps
    end
  end
end

マイグレーションファイルの編集が終わったら、ターミナルでマイグレーションファイルの記述を実行します。

ターミナル

$ rake db:migrate      #マイグレーションファイルを実行

エラーが出なければtweetモデルの完成です!

Modelでデータベースとやり取り

それでは実際にtweetモデルを使ってデータベースとやり取りをしてみましょう。
今回はrailsのコンソールを使用します。

ターミナル

$ rails c                          #railsのコンソールを立ち上げる
pry(main)> @tweet = Tweet.new()      #Tweetモデルに基づいた新しい変数@tweetを作成する
pry(main)> @tweet.body = "こんにちは"   #@tweetのbodyカラムに文字を代入
=>"こんにちは"
pry(main)> @tweet.save               #@tweetをデータベースに保存する
=> true

以上でデータベースのtweetテーブルの1番目に@tweetの情報が保存されました!
最後に、保存されたデータを編集してみましょう。

ターミナル

pry(main)> @tweet = Tweet.find(1)    #保存されているidが1のtweetを取得する
pry(main)> @tweet.body = "さようなら"   #保存されている文字列を変更する
=> "さようなら"
pry(main)> @tweet.save               #変更した内容を保存する
=> true

他にも削除やコピーなど様々なことができますので、調べてみると勉強になるかと思います!

まとめ

いかがだったでしょうか。
MVC(モデル、ビュー、コントローラ)はRailsアプリと切ってもきれない関係にあるので、ぜひマスターしましょう!