yutokyokutyo / rebuild_sample_app

https://railstutorial.jp/chapters/static_pages?version=5.0#cha-static_pages
https://rebuildsampleapp.herokuapp.com/
5 stars 0 forks source link

7章 #6

Closed yutokyokutyo closed 7 years ago

yutokyokutyo commented 7 years ago

7.1.1 演習

irb(main):001:0> User.count
   (0.4ms)  SELECT COUNT(*) FROM "users"
=> 1
irb(main):002:0> user = User.first
  User Load (0.5ms)  SELECT  "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT ?  [["LIMIT", 1]]
=> #<User id: 1, name: "Michael Hartl", email: "mhart@example.com", created_at: "2017-04-01 08:11:37", updated_at: "2017-04-01 08:11:37", password_digest: "$2a$10$Rzw7BeHGn1qH4XBC.effkebonD1kkZc9nvyOm8BndCS...">
irb(main):003:0> user
=> #<User id: 1, name: "Michael Hartl", email: "mhart@example.com", created_at: "2017-04-01 08:11:37", updated_at: "2017-04-01 08:11:37", password_digest: "$2a$10$Rzw7BeHGn1qH4XBC.effkebonD1kkZc9nvyOm8BndCS...">
irb(main):004:0> puts user.attributes.to_yaml
---
id: 1
name: Michael Hartl
email: mhart@example.com
created_at: !ruby/object:ActiveSupport::TimeWithZone
  utc: &1 2017-04-01 08:11:37.731348000 Z
  zone: &2 !ruby/object:ActiveSupport::TimeZone
    name: Etc/UTC
  time: *1
updated_at: !ruby/object:ActiveSupport::TimeWithZone
  utc: &3 2017-04-01 08:11:37.731348000 Z
  zone: *2
  time: *3
password_digest: "$2a$10$Rzw7BeHGn1qH4XBC.effkebonD1kkZc9nvyOm8BndCSnir6reFlkW"
=> nil
irb(main):005:0> y user.attributes
---
id: 1
name: Michael Hartl
email: mhart@example.com
created_at: !ruby/object:ActiveSupport::TimeWithZone
  utc: &1 2017-04-01 08:11:37.731348000 Z
  zone: &2 !ruby/object:ActiveSupport::TimeZone
    name: Etc/UTC
  time: *1
updated_at: !ruby/object:ActiveSupport::TimeWithZone
  utc: &3 2017-04-01 08:11:37.731348000 Z
  zone: *2
  time: *3
password_digest: "$2a$10$Rzw7BeHGn1qH4XBC.effkebonD1kkZc9nvyOm8BndCSnir6reFlkW"
=> nil
yutokyokutyo commented 7 years ago

7.1.3

(byebug) puts params.to_yaml
--- !ruby/object:ActionController::Parameters
parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
  controller: users
  action: show
  id: '1'
permitted: false
nil

(byebug) puts @user

nil
yutokyokutyo commented 7 years ago

7.2.1

  1. 試しに、リスト 7.15にある:nameを:nomeに置き換えてみましょう。どんなエラーメッセージが表示されるようになりますか?
  2. 試しに、ブロックの変数fをすべてfoobarに置き換えてみて、結果が変わらないことを確認してみてください。確かに結果は変わりませんが、変数名をfoobarとするのはあまり良い変更ではなさそうですね。その理由について考えてみてください。
undefined method `nome' for #<User:0x007f820f26a960>
Did you mean?  name
yutokyokutyo commented 7 years ago

7.3.2

/users/new?admin=1 にアクセスし、paramsの中にadmin属性が含まれていることをデバッグ情報から確認してみましょう。

--- !ruby/object:ActionController::Parameters
parameters: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
  admin: '1'
  controller: users
  action: new
permitted: false
yutokyokutyo commented 7 years ago

7.3.3

  1. n最小文字数を5に変更すると、エラーメッセージも自動的に更新されることを確かめてみましょう。

パスワードの最小文字数を5にするのだと思うけど、どこをなおせばよいのか分からなかった。

  1. 未送信のユーザー登録フォーム (図 7.12) のURLと、送信済みのユーザー登録フォーム (図 7.18) のURLを比べてみましょう。なぜURLは違っているのでしょうか? 考えてみてください。

http://localhost:3000/signup http://localhost:3000/users

config/routes.rb に get '/signup', to:'users#new' とルーティングが書かれているから

yutokyokutyo commented 7 years ago

上記OK!

yutokyokutyo commented 7 years ago

7.4.1

  1. 有効な情報を送信し、ユーザーが実際に作成されたことを、Railsコンソールを使って確認してみましょう。

image

>> User.find_by(name: 'hogehoge')
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."name" = ? LIMIT ?  [["name", "hogehoge"], ["LIMIT", 1]]
=> #<User id: 10, name: "hogehoge", email: "hogehoge@gmail.com", created_at: "2017-04-07 02:44:21", updated_at: "2017-04-07 02:44:21", password_digest: "$2a$10$X4xysdUYOLPaTxdX/kHjiuC06TKX2Ca30Sdej4Rsnuc...">
  1. リスト 7.28を更新し、redirect_to user_url(@user)とredirect_to @userが同じ結果になることを確認してみましょう。

I got the same result!

yutokyokutyo commented 7 years ago

7.4.2

  1. コンソールに移り、文字列内の式展開 (4.2.2) でシンボルを呼び出してみましょう。例えば"#{:success}"といったコードを実行すると、どんな値が返ってきますか? 確認してみてください。
  2. 先ほどの演習で試した結果を参考に、リスト 7.30のflashはどのような結果になるか考えてみてください。
>> "#{ :success}"
=> "success"
>> flash
=> {:success=>"It worked!", :danger=>"It failed."}
yutokyokutyo commented 7 years ago

完!!