動作確認環境
- Windows10(x64)
- rails 6.1.7
- ruby 3.0.4p208
モデルを定義してみる
プロジェクトのルートディレクトリへ移動し、「rails g model ToDoList title:string content:string create_at:date update_at:date」のように実行してみる
→今回の場合は添付オレンジ枠の3つのファイルが生成された。
※上記のcreate_at:date update_at:dateの箇所は設定しなくても勝手に作ってくれるので不要だった
![](https://work-note32.com/wp-content/uploads/2023/06/image-18-1024x191.png)
※rails g model コマンドの詳細は https://railsdoc.com/page/rails_generate_model を参照
生成された各ファイルの内容↓
class ToDoList < ApplicationRecord
end
class CreateToDoLists < ActiveRecord::Migration[6.1]
def change
create_table :to_do_lists do |t|
t.string :title
t.string :content
t.date :create_at
t.date :update_at
t.timestamps
end
end
end
require 'rails_helper'
RSpec.describe ToDoList, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end
プロジェクトのルートディレクトリで「bundle exec rails db:migrate」を実行する
※データベースをまだ作成していない場合は先にbundle exec rails db:createが必要になるはず
![](https://work-note32.com/wp-content/uploads/2023/06/image-27.png)
→pgAdmin4で確認すると、テーブルが生成されていることが分かる。
![](https://work-note32.com/wp-content/uploads/2023/06/image-20-570x1024.png)
モデルのインスタンスを保存してみる
rails c で、作成したモデルのインスタンスを生成してみる
saveメソッドを実行すると、テーブルにレコードを保存できる
(newでモデルのインスタンスを生成し、idを設定、saveメソッドでDBへ保存している)
![](https://work-note32.com/wp-content/uploads/2023/06/image-28-1024x326.png)
![](https://work-note32.com/wp-content/uploads/2023/06/image-22-1024x292.png)
モデルを検索してみる
まず以下のようなレコードを準備する
![](https://work-note32.com/wp-content/uploads/2023/06/image-23-1024x481.png)
rails c を起動し、findメソッドを使えば、引数で指定したプライマリーキーに合致するレコードを取得することができる。
![](https://work-note32.com/wp-content/uploads/2023/06/image-24-1024x190.png)
プライマリーキーではなく、その他の属性を検索条件に指定したい場合はfind_byメソッドを使えば良い。
![](https://work-note32.com/wp-content/uploads/2023/06/image-25-1024x173.png)
複数のレコードを検索する場合は、whereメソッドを用いる
![](https://work-note32.com/wp-content/uploads/2023/06/image-26.png)