【Rails初心者向け】Modelの操作法を解説
こんにちは、足立です!
今回はRailsのModelについて解説させていただきたいと思います。
Modelとは?
前回の記事でコントローラ(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アプリと切ってもきれない関係にあるので、ぜひマスターしましょう!