active record入門 !アソシエーション(関連)編
TRANSCRIPT
Ruby / Ruby on Railsビギナーズ倶楽部
Active Record入門 ! アソシエーション(関連)編
2015.07.04
モデル開発
Self-Intoroduction
• WordPressもくもく倶楽部@Co-Edoも来てください♪
• Swiftビギナーズ倶楽部@Co-Edoも開催しています( ▽ ` )ノ
• アプリケーションエンジニア(Rails/LAMP/Java/Oracle)
http://wp-moku.doorkeeper.jp/
一緒に勉強しましょう( ▽ ` )ノ 勉強会やってます!
http://swift-beginners.doorkeeper.jp/
徳島県出身です
(o∀`o)
1)Active Recordの基本
Today's Agenda
2)アソシエーション(関連)の基本
3)実際にやってみよう!
1)Active Recordの基本
図引用:Railsチュートリアル「図2.11RailsにおけるMVC。」
ここのお話
Active Recordは、MVCモデルの「M」担当。
RailsのM(モデル)の基本3つ
1)モデルとは、データベースにアクセスする コンポーネント(部品)です。
2)Rails標準のモデル層に相当するのが、 「Active Record」です。 オブジェクト
リレーショナル マッピング
3)「Active Record」が、ORMを担当します。
ORMは何してくれる?モデル構造(アプリケーション)と
テーブル構造(RDB)は、決定的に構造が違います。
O/Rマッピング ともいいます。
ID 姓 名1 小林 加奈子
2 山田 一郎
3 鈴木 花子
ユーザーテーブルUser
- id- first_name- last_name
first_name:小林last_name:加奈子
id:1
first_name:山田last_name:一郎
id:2
ユーザーモデル(クラス)
オブジェクト
オブジェクト
インピーダンスミスマッチと いいます。
☓
ORMは何してくれる?モデル構造(アプリケーション)と
テーブル構造(DB)を紐付けてくれます。
O/Rマッピング ともいいます。
User- id- first_name- last_name
first_name:小林last_name:加奈子
id:1
first_name:山田last_name:一郎
id:2
ユーザーモデル(クラス)
オブジェクト
オブジェクト
ID 姓 名1 小林 加奈子
2 山田 一郎
3 鈴木 花子
ユーザーテーブル
レコード
レコード
ORM
2)アソシエーション(関連)の基本
select user.name, post.title, post.content from user inner join post on user.id = post.user_id;
テーブル間の「1対多」の抽出を、 SQLで書くとこんな感じ。
2)アソシエーション(関連)の基本
Railsでは、テーブル間の「1対多」を RDBではなく、モデルで簡単に実装できます。
class User < ActiveRecord::Base has_many :posts endclass Post < ActiveRecord::Base belongs_to :user end
モデルに 設定すると
2)アソシエーション(関連)の基本
「1対多」のデータを簡単に抽出できます!
User.first.posts例えば
この記述だけで
実際にやってみよう!
DEMO
ま と め
・モデルおよびモデル内のデータを表現する。 ・モデル間の関連付け(アソシエーション)を表現する。 ・関連するモデルを介した継承階層を表現する。 ・データがデータベースに永続的に保存される前に 検証(validation)を行なう。 ・オブジェクト指向の表記方法でデータベースを操作する。
Active Recordにはさまざまな機能が搭載されています。
参 照 情 報
http://railsguides.jp/active_record_basics.html
・RailsGuides ー Active Record の基礎 ー
Let's study together!
Thank you :)