RailsTutorial7章

再復習している本

たのしいRuby 第6版

たのしいRuby 第6版

改訂2版 パーフェクトRuby

改訂2版 パーフェクトRuby

Railsの3つの環境

Railsにはテスト環境(test)、開発環境(development)、そして本番環境(production)の3つの環境がデフォルトで装備されています。Rails consoleのデフォルトの環境はdevelopmentです。

ストロングパラメータ

paramsハッシュ全体を初期化するという行為はセキュリティ上、極めて危険だからです。これは、ユーザーが送信したデータをまるごとUser.newに渡していることになります。ここで、Userモデルにadmin属性というものがあるとしましょう。この属性>は、Webサイトの管理者であるかどうかを示します(この属性を実装するのは10.4.1になってからです)。admin=’1’という値をparams[:user]の一部に紛れ込ませて渡してしまえば、この属性をtrueにすることができます。これはcurlなどのコマンドを使 えば簡単に実現できます。paramsハッシュがまるごとUser.newに渡されてしまうと、どのユーザーでもadmin=’1’をWebリクエストに紛れ込ませるだけでWebサイトの管理者権限を奪い取ることができてしまいます

params.require(:user).permit(:name, :email, :password, :password_confirmation)

エラー数を英語で表記

<%= pluralize(@user.errors.count, "error") %>

>> helper.pluralize(5, "error")
=> "5 errors"

このコードは、例えば"0 errors"、"1 error"、"2 errors"などのように、エラーの数に応じて活用された単語を返します。これにより、"1 errors" のような英語の文法に合わない文字列を避けることができます(これはWebアプリでもデスクトップアプリで>も実によく見かけるエラーです)。

redirect_to @userについて

redirect_to @userはredirect_to user_url(@user)と等価

エラーメッセージ

<% flash.each do |message_type, message| %>
  <div class="alert alert-<%= message_type %>"><%= message %></div>
<% end %>

ターミナル

irb(main):007:0> flash = { success: "It worked!", danger: "It failed." ,info: "aaa"}
=> {:success=>"It worked!", :danger=>"It failed.", :info=>"aaa"}
irb(main):008:0>  flash.each do |key, value|
irb(main):009:1* puts "#{key}"
irb(main):010:1>  puts "#{value}"
irb(main):011:1> end
success
It worked!
danger
It failed.
info
aaa
=> {:success=>"It worked!", :danger=>"It failed.", :info=>"aaa"}
irb(main):012:0>