SlideShare a Scribd company logo
1 of 51
Download to read offline
バカでもわかるRails #02
Model/Controller/Routes/認証 編
石井大輔 - www.jenio.co
Twitter@ishiid, email: dai@jenio.co 1
馬鹿
パパ、
Ruby on Rails教えて!
2
題名はクレージーですが、真面目な教材です
Rubyは英語みたいでとっつきやすいのに、Railsはとても難しい。
これが初心者の僕の悩みでした。もっと簡単な学習方法はないものか。
原因はRails用語が実生活で全く使わない抽象概念だからではないでしょうか。
だったらまず用語の意味を繰り返し覚えるべきでは?
英語の勉強と同じ手法を取れば良いのでは?これが僕の仮説です。
Q&A形式でクイズっぽい単語帳カードを作りましたので、
自習もしくは相方と使ってみて下さい。
コーディングを楽しみましょう! 3
単語帳の様に繰り返し学びましょう!
4
注意
この教材は一通りRailsを勉強したが、
記憶が定着していない人を対象としています。
全くの初心者の方は、
まずRubyとRailsを勉強し、補助教材として使ってください。
説明を意図的にシンプルかつ抽象的にまとめてありますので、
細かい点気になる人はググりましょう。
5
コンセプトについて
勉強しよう!
6
“tweets”という名前のデータベースがあると仮定しましょ
う。エクセルシートに形が似ています。
id tweet user
1 私は元気です。 ヒロシ
2 結婚しました! マリ
3 転職決まりました。 ケンジ
7
*データベース名は常に小文字で始まり複数形です“tweets”.
問: RailsでいうModelって簡単に言うと何?
8
問: RailsでいうModelって簡単に言うと何?
9
答: Railsのアプリがどの様に
データベースと連絡を取るか、と
いう仕組み
問: Modelのファイルの基本には何が書いてある?
10
問: Modelのファイルの基本には何が書いてある?
11
答: app/models/tweet.rbの場合
Class Tweet < ActiveRecord::Base
end
*Tweetはクラスの名前なので大文字
*TweetはActiveRecordを継承
問: ActiveRecordって簡単に言うと何?
12
問: ActiveRecordって簡単に言うと何?
13
答: Modelそのもの。データベースと論理を
コントロールする仕組み。
認証の仕組みを
勉強しよう!
14
問: データの存在を認証するModelのコードを書いて
15
問: データの存在を認証するModelのコードを書いて
16
答: app/models/tweet.rb
Class Tweet < ActiveRecord::Base
validates_presence_of :status
end
問: 前ページのModelに対して空のデータを作って認証
してみて
17
問: 前ページのModelに対して空のデータを作って認証
してみて
18
答: t = Tweet.new
=> #< Tweet id:nil, text:nil, user:nil>
t.save => false
*nil = データなしという意味
*false = 認証が取れず保存できなかった
問: 前ページの空データに対してエラーメッセージを表示
させて
19
問: 前ページの空データに対してエラーメッセージを表示
させて
20
答: t.errors.messages => {status:[“空欄
は不可です”]}
もしくは
t.errors[:status][0] => “空欄は不可です”
問: 数値か小数点のみ有効かどうか認証するModelを
書いてください
21
問: 数値か小数点のみ有効かどうか認証するModelを
書いてください
22
答:class Tweet < ActiveRecord::Base
validates :tweet, numericality: true
end
問: 数値のみ認証するModelを書いてください
23
問: 数値のみ認証するModelを書いてください
24
答:class Tweet < ActiveRecord::Base
validates :tweet, numericality:
{only_integer: true }
end
Controllerを
勉強しよう!
25
問: JSONとは何の事ですか?具体例交え。
26
問: JSONとは何の事ですか?具体例交え。
27
答:JavaScriptの中でデータを表現する為の
文法
{"employees":[{"firstName":"John","lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}]}
問: XMLとは何の事ですか?具体例交え。
28
問: XMLとは何の事ですか?具体例交え。
29
答:タグを使ったデータの表現形式
<employees><employee>
<firstName>John</firstName> <lastName>Doe</lastName>
</employee><employee>
<firstName>Anna</firstName> <lastName>Smith</lastName>
</employee><employee>
<firstName>Peter</firstName> <lastName>Jones</lastName>
</employee></employees>
問: 「travels」コントローラの「show」アクションを呼び出す時にパ
ラメータ名「id=10」の値をリクエストに含める場合のURLは?
30
問: 「travels」コントローラの「show」アクションを呼び出す時にパ
ラメータ名「id=10」の値をリクエストに含める場合のURLは?
31
答:http://localhost:3000/travels/show/10
問: 前ページの場合のルーティングは?
32
問: 前ページの場合のルーティングは?
33
答:match ‘travels/show/:id’ =>
‘travels#show’
問: params[:パラーメータ名]の意味は?
34
問: params[:パラーメータ名]の意味は?
35
答:アクションメソッドの中で、パラメータ名を指
定して値を取得する
問: 今回のセッションのユーザーIDが、そのツイートの
ユーザーIDと一致していない、というコード
36
問: 今回のセッションのユーザーIDが、そのツイートの
ユーザーIDと一致していない、というコード
37
答:session[:user_id] != @tweet.user_id
問: 登録ありがとうございます、とフラッシュメッセージを
出すコード
38
問: 登録ありがとうございます、とフラッシュメッセージを
出すコード
39
答:flash[:notice] = “登録ありがとうございま
す”
問: tweetを取得するget_tweetというメソッドを定義してく
ださい
40
問: tweetを取得するget_tweetというメソッドを定義してく
ださい
41
答: def get_tweet
@tweet = Tweet.find(params[:id])
end
問: get_tweetをedit, update, destroyの時に実行すると
いうコードを書いてください
42
問: get_tweetをedit, update, destroyの時に実行すると
いうコードを書いてください
43
答: app/controller/tweets_controller.rb
before_action :get_tweet, only: [:edit, :
update, :destroy]
Routesを
勉強しよう!
44
問: Twitterというアプリのroutes.rbの骨格を書いてくださ
い
45
問: Twitterというアプリのroutes.rbの骨格を書いてくださ
い
46
答: app/config/routes.rb
Twitter::Application.routes.draw do
end
問: 前ページの回答にresourcesを足してください
47
問: 前ページの回答にresourcesを足してください
48
答: app/config/routes.rb
Twitter::Application.routes.draw do
resources :tweets
end
*resourcesは常に小文字で複数形
問: 前ページの回答にnew actionを足してください
49
問: 前ページの回答にnew actionを足してください
50
答: app/config/routes.rb
Twitter::Application.routes.draw do
resources :tweets
get ‘/new_tweet’ => ‘tweets#new’
end
path controller action
GOAL! よくできました!
良かったら繰り返しチャレンジしてみてください。
51
改善の為の、
ご意見ご感想お待ちしています。
Twitter@ishiid
https://twitter.com/ishiid
Email: dai@jenio.co

More Related Content

Viewers also liked

Rails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2editionRails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2editionSatomi Tsujita
 
Roombaを鉄騎コントローラーで操縦してみた
Roombaを鉄騎コントローラーで操縦してみたRoombaを鉄騎コントローラーで操縦してみた
Roombaを鉄騎コントローラーで操縦してみたDaisuke Nikura
 
こんにちは、白い粉エバンジェリストの山口です
こんにちは、白い粉エバンジェリストの山口ですこんにちは、白い粉エバンジェリストの山口です
こんにちは、白い粉エバンジェリストの山口です亮介 山口
 
アジャイル勉強会
アジャイル勉強会アジャイル勉強会
アジャイル勉強会moai kids
 
作業中の気付きからhouren.soが開発されるまで
作業中の気付きからhouren.soが開発されるまで作業中の気付きからhouren.soが開発されるまで
作業中の気付きからhouren.soが開発されるまでTsuyoshi Saito
 
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京hecomi
 
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)codeal
 
超初心者向け 無料ホームページ作成ツール Wixを学ぼう
超初心者向け 無料ホームページ作成ツール Wixを学ぼう超初心者向け 無料ホームページ作成ツール Wixを学ぼう
超初心者向け 無料ホームページ作成ツール Wixを学ぼうDaisuke Ishii
 
【セプテーニHD】2016年9月期 第1四半期決算説明会資料
【セプテーニHD】2016年9月期 第1四半期決算説明会資料【セプテーニHD】2016年9月期 第1四半期決算説明会資料
【セプテーニHD】2016年9月期 第1四半期決算説明会資料SEPTENI HOLDINGS CO.,LTD.
 
自己変革とゲーミング 慶應義塾大学大学院システムマネジメントデザイン研究科Kids20121203keiogdw
自己変革とゲーミング 慶應義塾大学大学院システムマネジメントデザイン研究科Kids20121203keiogdw自己変革とゲーミング 慶應義塾大学大学院システムマネジメントデザイン研究科Kids20121203keiogdw
自己変革とゲーミング 慶應義塾大学大学院システムマネジメントデザイン研究科Kids20121203keiogdwkojitakahashi
 
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術Kohsuke Yuasa
 
Duolingo.pptx
Duolingo.pptxDuolingo.pptx
Duolingo.pptxsyou6162
 
「コトナス」:出会わなくても良いアプリ『Match★Contact』
「コトナス」:出会わなくても良いアプリ『Match★Contact』「コトナス」:出会わなくても良いアプリ『Match★Contact』
「コトナス」:出会わなくても良いアプリ『Match★Contact』cotonas_en
 
20120720自動車技術会
20120720自動車技術会20120720自動車技術会
20120720自動車技術会Fusaji Hayasaka
 
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてTatsuhiko Yamamura
 
WordPressでサイト作成するときに知っておくといいことあれこれ
WordPressでサイト作成するときに知っておくといいことあれこれWordPressでサイト作成するときに知っておくといいことあれこれ
WordPressでサイト作成するときに知っておくといいことあれこれYUKI YAMAGUCHI
 

Viewers also liked (19)

Rails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2editionRails初心者レッスン lesson4 2edition
Rails初心者レッスン lesson4 2edition
 
Roombaを鉄騎コントローラーで操縦してみた
Roombaを鉄騎コントローラーで操縦してみたRoombaを鉄騎コントローラーで操縦してみた
Roombaを鉄騎コントローラーで操縦してみた
 
こんにちは、白い粉エバンジェリストの山口です
こんにちは、白い粉エバンジェリストの山口ですこんにちは、白い粉エバンジェリストの山口です
こんにちは、白い粉エバンジェリストの山口です
 
アジャイル勉強会
アジャイル勉強会アジャイル勉強会
アジャイル勉強会
 
作業中の気付きからhouren.soが開発されるまで
作業中の気付きからhouren.soが開発されるまで作業中の気付きからhouren.soが開発されるまで
作業中の気付きからhouren.soが開発されるまで
 
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
 
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)
[コデアル株式会社] Ruby on rails 開発環境設定勉強会(株式会社シンクスマイル主催)
 
超初心者向け 無料ホームページ作成ツール Wixを学ぼう
超初心者向け 無料ホームページ作成ツール Wixを学ぼう超初心者向け 無料ホームページ作成ツール Wixを学ぼう
超初心者向け 無料ホームページ作成ツール Wixを学ぼう
 
gem の探し方
gem の探し方gem の探し方
gem の探し方
 
Rails あるある
Rails あるあるRails あるある
Rails あるある
 
【セプテーニHD】2016年9月期 第1四半期決算説明会資料
【セプテーニHD】2016年9月期 第1四半期決算説明会資料【セプテーニHD】2016年9月期 第1四半期決算説明会資料
【セプテーニHD】2016年9月期 第1四半期決算説明会資料
 
自己変革とゲーミング 慶應義塾大学大学院システムマネジメントデザイン研究科Kids20121203keiogdw
自己変革とゲーミング 慶應義塾大学大学院システムマネジメントデザイン研究科Kids20121203keiogdw自己変革とゲーミング 慶應義塾大学大学院システムマネジメントデザイン研究科Kids20121203keiogdw
自己変革とゲーミング 慶應義塾大学大学院システムマネジメントデザイン研究科Kids20121203keiogdw
 
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
 
docxをmdで書こう
docxをmdで書こうdocxをmdで書こう
docxをmdで書こう
 
Duolingo.pptx
Duolingo.pptxDuolingo.pptx
Duolingo.pptx
 
「コトナス」:出会わなくても良いアプリ『Match★Contact』
「コトナス」:出会わなくても良いアプリ『Match★Contact』「コトナス」:出会わなくても良いアプリ『Match★Contact』
「コトナス」:出会わなくても良いアプリ『Match★Contact』
 
20120720自動車技術会
20120720自動車技術会20120720自動車技術会
20120720自動車技術会
 
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成について
 
WordPressでサイト作成するときに知っておくといいことあれこれ
WordPressでサイト作成するときに知っておくといいことあれこれWordPressでサイト作成するときに知っておくといいことあれこれ
WordPressでサイト作成するときに知っておくといいことあれこれ
 

Recently uploaded

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Recently uploaded (12)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

バカでもわかるRails #02