51
バカでもわかるRails #02 Model/Controller/Routes/認証 石井大輔 - www.jenio.co Twitter@ishiid, email: [email protected] 1 馬鹿

バカでもわかるRails #02

Embed Size (px)

Citation preview

Page 1: バカでもわかるRails #02

バカでもわかるRails #02Model/Controller/Routes/認証 編

石井大輔 - www.jenio.co Twitter@ishiid, email: [email protected]

1

馬鹿

Page 2: バカでもわかるRails #02

パパ、Ruby on Rails教えて!

2

Page 3: バカでもわかるRails #02

題名はクレージーですが、真面目な教材です

Rubyは英語みたいでとっつきやすいのに、Railsはとても難しい。

これが初心者の僕の悩みでした。もっと簡単な学習方法はないものか。

原因はRails用語が実生活で全く使わない抽象概念だからではないでしょうか。

だったらまず用語の意味を繰り返し覚えるべきでは?

英語の勉強と同じ手法を取れば良いのでは?これが僕の仮説です。

Q&A形式でクイズっぽい単語帳カードを作りましたので、

自習もしくは相方と使ってみて下さい。

コーディングを楽しみましょう! 3

Page 4: バカでもわかるRails #02

単語帳の様に繰り返し学びましょう!

4

Page 5: バカでもわかるRails #02

注意

この教材は一通りRailsを勉強したが、記憶が定着していない人を対象としています。

全くの初心者の方は、まずRubyとRailsを勉強し、補助教材として使ってください。

説明を意図的にシンプルかつ抽象的にまとめてありますので、細かい点気になる人はググりましょう。

5

Page 6: バカでもわかるRails #02

コンセプトについて勉強しよう!

6

Page 7: バカでもわかるRails #02

“tweets”という名前のデータベースがあると仮定しましょう。エクセルシートに形が似ています。

id tweet user

1 私は元気です。 ヒロシ

2 結婚しました! マリ

3 転職決まりました。 ケンジ

7*データベース名は常に小文字で始まり複数形です“tweets”.

Page 8: バカでもわかるRails #02

問: RailsでいうModelって簡単に言うと何?

8

Page 9: バカでもわかるRails #02

問: RailsでいうModelって簡単に言うと何?

9

答: Railsのアプリがどの様に

データベースと連絡を取るか、と

いう仕組み

Page 10: バカでもわかるRails #02

問: Modelのファイルの基本には何が書いてある?

10

Page 11: バカでもわかるRails #02

問: Modelのファイルの基本には何が書いてある?

11

答: app/models/tweet.rbの場合

Class Tweet < ActiveRecord::Base

end

*Tweetはクラスの名前なので大文字

*TweetはActiveRecordを継承

Page 12: バカでもわかるRails #02

問: ActiveRecordって簡単に言うと何?

12

Page 13: バカでもわかるRails #02

問: ActiveRecordって簡単に言うと何?

13

答: Modelそのもの。データベースと論理を

コントロールする仕組み。

Page 14: バカでもわかるRails #02

認証の仕組みを勉強しよう!

14

Page 15: バカでもわかるRails #02

問: データの存在を認証するModelのコードを書いて

15

Page 16: バカでもわかるRails #02

問: データの存在を認証するModelのコードを書いて

16

答: app/models/tweet.rb

Class Tweet < ActiveRecord::Base

validates_presence_of :status

end

Page 17: バカでもわかるRails #02

問: 前ページのModelに対して空のデータを作って認証してみて

17

Page 18: バカでもわかるRails #02

問: 前ページのModelに対して空のデータを作って認証してみて

18

答: t = Tweet.new

=> #< Tweet id:nil, text:nil, user:nil>

t.save => false

*nil = データなしという意味

*false = 認証が取れず保存できなかった

Page 19: バカでもわかるRails #02

問: 前ページの空データに対してエラーメッセージを表示させて

19

Page 20: バカでもわかるRails #02

問: 前ページの空データに対してエラーメッセージを表示させて

20

答: t.errors.messages => {status:[“空欄

は不可です”]}

もしくは

t.errors[:status][0] => “空欄は不可です”

Page 21: バカでもわかるRails #02

問: 数値か小数点のみ有効かどうか認証するModelを書いてください

21

Page 22: バカでもわかるRails #02

問: 数値か小数点のみ有効かどうか認証するModelを書いてください

22

答:class Tweet < ActiveRecord::Base

validates :tweet, numericality: true

end

Page 23: バカでもわかるRails #02

問: 数値のみ認証するModelを書いてください

23

Page 24: バカでもわかるRails #02

問: 数値のみ認証するModelを書いてください

24

答:class Tweet < ActiveRecord::Base

validates :tweet, numericality: {only_integer: true }

end

Page 25: バカでもわかるRails #02

Controllerを勉強しよう!

25

Page 26: バカでもわかるRails #02

問: JSONとは何の事ですか?具体例交え。

26

Page 27: バカでもわかるRails #02

問: JSONとは何の事ですか?具体例交え。

27

答:JavaScriptの中でデータを表現する為の

文法

{"employees":[{"firstName":"John","lastName":"Doe"},

{"firstName":"Anna", "lastName":"Smith"},

{"firstName":"Peter", "lastName":"Jones"}]}

Page 28: バカでもわかるRails #02

問: XMLとは何の事ですか?具体例交え。

28

Page 29: バカでもわかるRails #02

問: 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

問: 「travels」コントローラの「show」アクションを呼び出す時にパ

ラメータ名「id=10」の値をリクエストに含める場合のURLは?

30

Page 31: バカでもわかるRails #02

問: 「travels」コントローラの「show」アクションを呼び出す時にパ

ラメータ名「id=10」の値をリクエストに含める場合のURLは?

31

答:http://localhost:3000/travels/show/10

Page 32: バカでもわかるRails #02

問: 前ページの場合のルーティングは?

32

Page 33: バカでもわかるRails #02

問: 前ページの場合のルーティングは?

33

答:match ‘travels/show/:id’ => ‘travels#show’

Page 34: バカでもわかるRails #02

問: params[:パラーメータ名]の意味は?

34

Page 35: バカでもわかるRails #02

問: params[:パラーメータ名]の意味は?

35

答:アクションメソッドの中で、パラメータ名を指

定して値を取得する

Page 36: バカでもわかるRails #02

問: 今回のセッションのユーザーIDが、そのツイートのユーザーIDと一致していない、というコード

36

Page 37: バカでもわかるRails #02

問: 今回のセッションのユーザーIDが、そのツイートのユーザーIDと一致していない、というコード

37

答:session[:user_id] != @tweet.user_id

Page 38: バカでもわかるRails #02

問: 登録ありがとうございます、とフラッシュメッセージを出すコード

38

Page 39: バカでもわかるRails #02

問: 登録ありがとうございます、とフラッシュメッセージを出すコード

39

答:flash[:notice] = “登録ありがとうございま

す”

Page 40: バカでもわかるRails #02

問: tweetを取得するget_tweetというメソッドを定義してください

40

Page 41: バカでもわかるRails #02

問: tweetを取得するget_tweetというメソッドを定義してください

41

答: def get_tweet

@tweet = Tweet.find(params[:id])

end

Page 42: バカでもわかるRails #02

問: get_tweetをedit, update, destroyの時に実行するというコードを書いてください

42

Page 43: バカでもわかるRails #02

問: get_tweetをedit, update, destroyの時に実行するというコードを書いてください

43

答: app/controller/tweets_controller.rb

before_action :get_tweet, only: [:edit, :update, :destroy]

Page 44: バカでもわかるRails #02

Routesを勉強しよう!

44

Page 45: バカでもわかるRails #02

問: Twitterというアプリのroutes.rbの骨格を書いてください

45

Page 46: バカでもわかるRails #02

問: Twitterというアプリのroutes.rbの骨格を書いてください

46

答: app/config/routes.rb

Twitter::Application.routes.draw do

end

Page 47: バカでもわかるRails #02

問: 前ページの回答にresourcesを足してください

47

Page 48: バカでもわかるRails #02

問: 前ページの回答にresourcesを足してください

48

答: app/config/routes.rb

Twitter::Application.routes.draw do

resources :tweets

end

*resourcesは常に小文字で複数形

Page 49: バカでもわかるRails #02

問: 前ページの回答にnew actionを足してください

49

Page 50: バカでもわかるRails #02

問: 前ページの回答に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

GOAL! よくできました!良かったら繰り返しチャレンジしてみてください。

51

改善の為の、ご意見ご感想お待ちしています。

Twitter@ishiidhttps://twitter.com/ishiidEmail: [email protected]