SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
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)
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
end
class 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 :)

Más contenido relacionado

Más de Kanako Kobayashi

Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!Kanako Kobayashi
 
楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)Kanako Kobayashi
 
WordPressの構造を理解しよう
WordPressの構造を理解しようWordPressの構造を理解しよう
WordPressの構造を理解しようKanako Kobayashi
 
Swiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようSwiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようKanako Kobayashi
 
Ruby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストRuby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストKanako Kobayashi
 
oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!Kanako Kobayashi
 
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回Kanako Kobayashi
 
シェイクを検知して学ぼう、モーションイベント!
シェイクを検知して学ぼう、モーションイベント!シェイクを検知して学ぼう、モーションイベント!
シェイクを検知して学ぼう、モーションイベント!Kanako Kobayashi
 
Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Kanako Kobayashi
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Kanako Kobayashi
 
railsはじめの一歩
railsはじめの一歩railsはじめの一歩
railsはじめの一歩Kanako Kobayashi
 
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」Kanako Kobayashi
 
20141220_iOS8マルチデバイス対応(Size Classes編)
20141220_iOS8マルチデバイス対応(Size Classes編)20141220_iOS8マルチデバイス対応(Size Classes編)
20141220_iOS8マルチデバイス対応(Size Classes編)Kanako Kobayashi
 
Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Kanako Kobayashi
 
Swiftビギナーズ勉強会 第一回@Co-Edo
Swiftビギナーズ勉強会 第一回@Co-EdoSwiftビギナーズ勉強会 第一回@Co-Edo
Swiftビギナーズ勉強会 第一回@Co-EdoKanako Kobayashi
 
Gulp De wordpress in WordBench
Gulp De wordpress in WordBenchGulp De wordpress in WordBench
Gulp De wordpress in WordBenchKanako Kobayashi
 

Más de Kanako Kobayashi (16)

Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!
 
楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)
 
WordPressの構造を理解しよう
WordPressの構造を理解しようWordPressの構造を理解しよう
WordPressの構造を理解しよう
 
Swiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようSwiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみよう
 
Ruby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストRuby on Railsではじめるrspecテスト
Ruby on Railsではじめるrspecテスト
 
oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!
 
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
超簡単!? ActiveAdminで作る管理画面@Ruby / Ruby on Rails ビギナーズ勉強会 第3回
 
シェイクを検知して学ぼう、モーションイベント!
シェイクを検知して学ぼう、モーションイベント!シェイクを検知して学ぼう、モーションイベント!
シェイクを検知して学ぼう、モーションイベント!
 
Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207
 
railsはじめの一歩
railsはじめの一歩railsはじめの一歩
railsはじめの一歩
 
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
 
20141220_iOS8マルチデバイス対応(Size Classes編)
20141220_iOS8マルチデバイス対応(Size Classes編)20141220_iOS8マルチデバイス対応(Size Classes編)
20141220_iOS8マルチデバイス対応(Size Classes編)
 
Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2
 
Swiftビギナーズ勉強会 第一回@Co-Edo
Swiftビギナーズ勉強会 第一回@Co-EdoSwiftビギナーズ勉強会 第一回@Co-Edo
Swiftビギナーズ勉強会 第一回@Co-Edo
 
Gulp De wordpress in WordBench
Gulp De wordpress in WordBenchGulp De wordpress in WordBench
Gulp De wordpress in WordBench
 

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