RailsTutorial7章
再復習している本
- 作者:Rubyサポーターズ
- 発売日: 2017/05/17
- メディア: Kindle版
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>