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