今日やること

  • Rails Tutorial 10.2~10章最後まで

学習効果を高める為に

  • 自分が取り組んでいる学習の目的を明確にする
  • 筋トレにしても鍛える部位を意識するとしないでは効果が全く違う、学習も基本的に同じ
  • (学習に限らず)最終的に目指す大きな目的に対し、小さなパーツに小分けして考える
  • 神はサイコロを振らない
    • 条件が全く同じなら結果も必ず同じになる
    • 同じにならないとすればそこには未だ我々の知らない変数が紛れている、ということに他ならない
    • 個々人ごとの学習方法・学習効果の違いについても法則性・正しいステップが必ずある
    • この世の全ては数式に置き換えられる
    • 学習効果の個人差も過程の違いも全ては確率によらない一定の法則性に基づく「現象」と考えられる
  • 要するに学習計画もその見直しも徹底してロジカルに進めようぜ、って話

Tips

10.2 認可
  • 認証 (authentication) サイトのユーザーを識別すること
  • 認可 (authorization) そのユーザーが実行可能な操作を管理すること

editアクション、updateアクションは既に完全に動作しているが、セキュリティ的には大問題が残っておりどのユーザーでも(ログイン状態にないユーザーでも)全てのアクションにアクセスし他人のデータを改変できてしまう

認可システムの実装が必要

beforeフィルター
before_actionで指定のアクション実行直前に呼び出されるメソッドを定義する

class UsersController < ApplicationController  

  before_action :logged_in_user, only: [:edit, :update]  
  ︙  
  # これより下ではprivateメソッドを定義していることを明示  
  private  

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

    # beforeアクション  

    # ログイン済みユーザーかどうか確認  
    def logged_in_user  
      unless logged_in?  
        flash[:danger] = "Please log in."  
        redirect_to login_url  
      end  
    end  
end  

unlessキーワード - ifの補完
unless logged_in? 「ログインユーザーでない(logged_in?がfalseを返す)限り」以下を実行

今日やったこと

  • Rails Tutorial 10.2のみ(所要時間8時間)

精神と時の部屋にでも籠ればなんとかなるかもしれないが。

  • なんでこんなにも進まないのか、一体何をやって時間を浪費しているのか
  • いい加減その原因を把握・改善できないとこの先何やるにも厳しい
  • 演習問題を飛ばして仮に所要時間1/4になったとしてもまだ遅い
  • 当面の(時間浪費に対する苦肉の)策として明日以降全ての演習問題は飛ばす
  • かつソースコード写経すらも手打ちでなくコピペで済ませる
  • いっそもう読むだけ、或いはRails Tutorial自体をやめた方がいいのかもしれない