active record入門 !アソシエーション(関連)編

14
Ruby / Ruby on Railsビギナーズ倶楽部 Active Record入門 ! アソシエーション(関連)編 2015.07.04 モデル開発

Upload: kanako-kobayashi

Post on 05-Aug-2015

654 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Active Record入門 !アソシエーション(関連)編

Ruby / Ruby on Railsビギナーズ倶楽部

Active Record入門 ! アソシエーション(関連)編

2015.07.04

モデル開発

Page 2: Active Record入門 !アソシエーション(関連)編

Self-Intoroduction

• WordPressもくもく倶楽部@Co-Edoも来てください♪

• Swiftビギナーズ倶楽部@Co-Edoも開催しています( ▽ ` )ノ

• アプリケーションエンジニア(Rails/LAMP/Java/Oracle)

http://wp-moku.doorkeeper.jp/

一緒に勉強しましょう( ▽ ` )ノ 勉強会やってます!

http://swift-beginners.doorkeeper.jp/

徳島県出身です

(o∀`o)

Page 3: Active Record入門 !アソシエーション(関連)編

1)Active Recordの基本

Today's Agenda

2)アソシエーション(関連)の基本

3)実際にやってみよう!

Page 4: Active Record入門 !アソシエーション(関連)編

1)Active Recordの基本

図引用:Railsチュートリアル「図2.11RailsにおけるMVC。」

ここのお話

Active Recordは、MVCモデルの「M」担当。

Page 5: Active Record入門 !アソシエーション(関連)編

RailsのM(モデル)の基本3つ

1)モデルとは、データベースにアクセスする   コンポーネント(部品)です。

2)Rails標準のモデル層に相当するのが、   「Active Record」です。 オブジェクト

リレーショナル マッピング

3)「Active Record」が、ORMを担当します。

Page 6: Active Record入門 !アソシエーション(関連)編

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

ユーザーモデル(クラス)

オブジェクト

オブジェクト

インピーダンスミスマッチと いいます。

Page 7: Active Record入門 !アソシエーション(関連)編

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

Page 8: Active Record入門 !アソシエーション(関連)編

2)アソシエーション(関連)の基本

select user.name, post.title, post.content from user inner join post on user.id = post.user_id;

テーブル間の「1対多」の抽出を、 SQLで書くとこんな感じ。

Page 9: Active Record入門 !アソシエーション(関連)編

2)アソシエーション(関連)の基本

Railsでは、テーブル間の「1対多」を RDBではなく、モデルで簡単に実装できます。

class User < ActiveRecord::Base has_many :posts endclass Post < ActiveRecord::Base belongs_to :user end

モデルに 設定すると

Page 10: Active Record入門 !アソシエーション(関連)編

2)アソシエーション(関連)の基本

「1対多」のデータを簡単に抽出できます!

User.first.posts例えば

この記述だけで

Page 11: Active Record入門 !アソシエーション(関連)編

実際にやってみよう!

DEMO

Page 12: Active Record入門 !アソシエーション(関連)編

ま と め

・モデルおよびモデル内のデータを表現する。 ・モデル間の関連付け(アソシエーション)を表現する。 ・関連するモデルを介した継承階層を表現する。 ・データがデータベースに永続的に保存される前に  検証(validation)を行なう。 ・オブジェクト指向の表記方法でデータベースを操作する。

Active Recordにはさまざまな機能が搭載されています。

Page 13: Active Record入門 !アソシエーション(関連)編

参 照 情 報

http://railsguides.jp/active_record_basics.html

・RailsGuides ー Active Record の基礎 ー

Page 14: Active Record入門 !アソシエーション(関連)編

Let's study together!

Thank you :)