Rails初心者必見!Active Recordってなに!?

f:id:slopebook:20180607183728j:plain 今回は僕がRuby on Railsを勉強してて「なんだこれ、よくわかんない!」ってなったActive Recordについて記録したいと思います!

Active Recordを一言で言うと?

最初はイメージが掴みづらいActive Record、それを一言で表すならば、 データベースにあるデータを簡単に利用できるようにするものです!
もう少しだけ細かく言うと、

  • SQLを意識せずにデータベースを操作できる

  • DBは基本的に何でもOK

  • 記述するルールがシンプル

といった感じです。

CRUD

例えばデータベースを操作するCRUD(Create, Read, Update, Delete)だとこうなります。

Create

たとえば、Userというモデルにnameとoccupationという属性があるとすると、createメソッドを実行すると新しいレコードが1つ作成され、データベースに保存されます。

user = User.create(name: "さかもと", age: 23)

newメソッドを使用した場合は、オブジェクトは保存されずにインスタンス化されます。

user = User.new
user.name = "さかもと"
user.age = 23
user.save

user.saveでデータベースにコミットされます。

Read
users = User.all #全てのユーザーを返す
user = User.first #最初のユーザーを返す
sakamoto = User.find_by(name: "さかもと") #"さかもと"という名前をもつ最初のユーザーを返す
users = User.where(name: 'さかもと', age: 23).order('created_at DESC') # 名前が"さかもと"で年齢が"23”のユーザーを全て返し、created_atカラムで逆順で並び替える
Update
user = User.find_by(name: 'さかもと') # 名前が"さかもと"のユーザーを呼び出し
user.name = 'デイビット' # 名前を"デイビット"に変更し
user.save # 保存

もっと短くしたい場合

user = User.find_by(name: 'さかもと')
user.update(name: 'デイビット')

でおんなじことができます

Delete
user = User.find_by(name: 'さかもと')
user.destroy

覚えておきたいこと

オブジェクトリレーショナルマッピング (OORM)とは、アプリケーションが持つリッチなオブジェクトをリレーショナルデータベース(RDBMS)のテーブルに接続するものです。ORMを使用することで、SQL文を直接書く代りにわずかなアクセスコードを書くだけで、アプリケーションにおけるオブジェクトの属性やリレーションシップをデータベースに保存したりデータベースから読み出したりすることができるようになります。

Railsにはデータベーススキーマを管理するためのドメイン固有言語(DSL: Domain Specific Language)があり、マイグレーション(migration)と呼ばれています。マイグレーションはファイルに保存されます。bin/railsを実行すると、Active Recordがサポートするあらゆるデータベースに対してマイグレーションが実行されます。以下はテーブルを作成するマイグレーションです。

  • validation(検証)

Active Recordを使用して、モデルがデータベースに書き込まれる前にモデルの状態を検証することができます。モデルをチェックするためのさまざまなメソッドが用意されています。属性が空でないこと、一意であること、既にデータベースにないこと、特定のフォーマットに従っていることなど、多岐にわたった検証が行えます。

最後に

Active Recordは最初はよくわからないですが、慣れるとすごく便利です。特に「DBなんでもOK」「記述ルールがシンプル」というところが嬉しい。

↓興味があったらフォローお願いします!