ActiveRecordとは?
MVCで言うところのM(モデル)に相当するものでありビジネスデータとビジネスロックを表すシステムの階層である。
データベースに恒久的に保存される必要のあるビジネスオブジェクトの作成と利用を円滑に行えるようにします。
一言で言えば 「RubyとSQLの翻訳機です」
基本的にDBにはDB言語としてSQLが使われています。
SQLでないと操作ができません。
しかし、RailsにはModelにActiveRecordが適用されているおかげで。 Ruby を用いてDBからデータを
探したり持ってくることが出来ます。
class ApplicationRecord < ActiveRecord::Base #ここでApplicationRecordにActiveRecordを継承
self.abstract_class = true
end
class Date < < ApplicationRecord #DateモデルにそのApplicationRecordを継承
end
Ruby on Rails
ORマッパーにActiveRecordを採用している
ActiveRecordはRuby on Railsが開発している
OR Mapper(Object<>RDB)
SQLを意識せずにデータベースを扱うことが可能
DBエンジンは原則何でも可能
ActiveRecordのメリット
Rubyで直感的にかける
探す場合のコード
User.find_by(name: "daie")
値をDBに保存するときのコード
User.create(name: "daie")
このように DBを見たり、レコードを作成する ときにSQLではなく、rubyで描けるようになります。
命名ルール
モデルのクラスー単数系、語頭を大文字にする(BookClass)
データベースのテーブル-複数形、語はアンダースコアで区切る(book_class)
created_atとupdated_atで作成日時の更新日時を自動保存できる。
ActiveRecordの使い方
1、DBにテーブルを作成
2、Ruby上でactive_recordをrequire
3、Timezoneを日本語に設定
4、ActiveRecord::BaseにDB接続情報を記載
5、テーブル名に基づくクラスを作成
6、上記のクラスからインスタンスを作成
インスタンスのレコードが1になる
ActiveRecordでよく使うメソッド
ActiveRecordのCRUDに従い説明していきます。
「Create:生成」、「Read:参照」、「Update:更新」、「Delete:削除」
careate(生成)に関するメソッド
@date = Date.new(title: "タイトル",content: "内容" )
#dateもでつのインスタンスを生成
@date = Date.build(title: "タイトル", content: "内容")
#newと同じ、可能性を上げるため関連モデルのインスタンスにするときによく使われる
@date.save
#newやbuildで作った@dateをDBに保存する
@date.create(title: "タイトル", content: "内容")
#newとsaveを組み合わせて生成と同時にDBへ保存する
read(参照)に関するメソッド
@date = Date.all
#datesテーブルから全レコードを配列として取得
@date = Date.first
#datesテーブルのidが一番小さいレコードを取得
@date = Date.last
#datesテーブルのidが一番大きいレコードを取得
@date = Date.find(1)
#引数に入っている数字と同じidのレコードを取得
@date = Date.find_by(title: "タイトル")
#引数に入っている条件と合っているもので一位番若いidのレコードを取得
@date = Date.where(title: "タイトル")
#引数に入っている条件と合っているすべてのレコードを取得
@date = Date.order(id: :desc)
#引数に入っているカラムを:asc(昇順)またはdesc(降順)に並び替えて取得
@date = select(:title)
#引数に入っている名前のカラムのみを取得
@date = Date.limit(3)
#引数に入っている数字の数だけidの若い順にレコードを取得
update(更新)に関するメソッド
@date = update
#findやfind_byで取得したレコードを元に更新
delete(削除)に関するメソッド
@date.destroy
#findやfind_byで取得したコードの削除
終わりに
初めてActiveRecordについてまとめてみました。
未経験でプログラミング初心者なので今までの学習を言語化できるようまとめて行きます。
今までなんとなく理解するだけだった内容を改めて記事にすることで理解を深められたらと思います。