今日の予定と注意点

Rails Tutorial 10章 ユーザーの更新・表示・削除
  • 手を動かすことが少なく「ただ漫然と読み進める+時々写経+演習」が続くようなら以降1章につき2時間を上限とする「流し読み」で可
    • 目標時間は2.5時間 リミット20:30
  • 夜22時以降は上記の進度に関わらずPCを切り読書に切り替える
    • 『ネットワーク&TCP/IPのきほん』
    • あえてRuby/Railsの技術本ではなくコンピュータ・サイエンス、ネットワークの基礎知識、或いは英語学習の読書に絞る
  • 読書以外の時間はとにかく手を動かす、ポートフォリオ最短作成に集中する
  • SNS、メルマガ、ブログ等に1日30分を超えて時間を割かない(厳選する)
    • 学習効果UPが即時期待できるもの以外はシャットアウト
      • KENTA氏のYoutube動画の一部を見返す
      • 未経験から2ヶ月で成果出してる先人の学習方法参考等
        • 以上も30分以上かけて視聴・拝読しないこと
  • インプットに偏らない
    • いくらいい文章を読んで感銘を受けても自身のスキルは積み上がらない
  • アウトプットも文章ではなく常にコーディングに最大時間を割く
    • たぶんその方が楽しいし、伸びるし、成果物が積み上がる
    • 現段階でSNS等で文章や意見を拡散したところで大した意味はない、むしろマイナス

この章の目的

  • Usersリソース用のRESTアクション(表 7.1に代表されるようなRESTfulなルーティング)のうち、これまで未実装だったedit&update(ユーザー情報編集)、index(ユーザーズ一覧)、destroy(ユーザー削除)アクションを加え、RESTアクションを完成させる。
  • ユーザーが自分のプロフィールを自分で更新できるようにする
    • 認可モデル (Authorization Model)についての理解
  • すべてのユーザーを一覧できるようにする
    • ページネーション機能の実装
  • ユーザーを削除し、データベースから完全に消去する
    • 管理ユーザーという特権クラスを作成し、このユーザーにのみ削除を許可する
  • 基本的な流れはProgateの踏襲・敷衍といった感

Tips

10.1 ユーザーを更新する

  • 基本的な流れはユーザー登録(new&create)と同じ
  • 最大の違いはユーザー情報を更新できるのはそのユーザー自身に限るという点
  • 第8章で実装した認証機構、beforeフィルターを使ってこのアクセス制御を実現する。

ユーザー編集画面のモックアップ

ユーザー情報編集のはじまりはまずDBからユーザー情報取得
"app/controller/users_controller.rb"

  def edit  
    @user = User.find(params[:id])  
  end  

演習1.に記述のあるセキュリティ対策 "No! Opener"

target="_brank"とセットでrel="noopener"が書かれる理由の詳細については略。
悪意のあるPhisingサイト等によって外部アンカーを開く際に親ページがリダイレクトされるなどの防止

演習2.

HTMLページ重複部分のパーシャルによるリファクタリング

※既に関連するリスト 7.27の演習課題を解いている為、サンプルコード(リスト10-5,10-6,10-7)のままではうまく動かない
→newとeditのパーシャルとなる共通部分を一部改変(URL指定部分もyieldに)

"app/views/_form.html.erb"(リスト10-5からURL指定部分を改変)

<%= form_for(@user, url: yield(:url) do |f| %>  
  <%= render 'shared/error_messages', object: @user %>  

  <%= f.label :name %>  
  <%= f.text_field :name, class: 'form-control' %>  

  <%= f.label :email %>  
  <%= f.email_field :email, class: 'form-control' %>  

  <%= f.label :password %>  
  <%= f.password_field :password, class: 'form-control' %>  

  <%= f.label :password_confirmation %>  
  <%= f.password_field :password_confirmation, class: 'form-control' %>  

  <%= f.submit yield(:button_text), class: "btn btn-primary" %>  
<% end %>  

"new.html.erb"

<% provide(:title, 'Sign up') %>  
<% provide(:url, signup_path) %>  
<% provide(:button_text, 'Creaate my account') %>  
<h1>Sign up</h1>  
<div class="row">  
  <div class="col-md-6 col-md-offset-3">  
    <%= render 'form' %>  
  </div>  
</div>  

"edit.html.erb"

<% provide(:title, "Edit user") %>  
<% provide(:url, user_path(@user.id)) %>  
<% provide(:button_text, 'Save changes') %>  
<h1>Update your profile</h1>  

<div class="row">  
  <div class="col-md-6 col-md-offset-3">  
    <%= render 'form' %>  
    <div class="gravatar_edit">  
      <%= gravatar_for @user %>  
      <a href="http://gravatar.com/emails" target="_blank" rel="noopener">change</a>  
    </div>  
  </div>  

ちなみに上記2行目を<% provide(:url, 'user_path(params[:id])') %>と書いても通るかと思ったがInvalidURIError が出た。
URLの"users/*:id*/edit"の:id部分が取り出せる仕組みも基本的にフォームと同じで、送信先でパラメータとして取り出すことはできても送信元の静的HTMLページ自体でparamsにアクセスはできない、と確認。
この理解で合っているか要確認(既にこの演習で大幅に予定遅れているので今は飛ばす)

他の人の参考所要時間では10章に2.5時間と書いてあるが、この時点(10.1.1演習完了)で既に2時間経過している

他の章もこの調子なので、他の人の参考所要時間が全体通して40時間に対し100時間でも全然足りない
つまり仕事が遅いということ。
根本的に学習の進め方を見直し、大幅に変更しないと幾ら時間を注いでも成果は上がらない
少なくとも未経験2ヶ月でポートフォリオ完成させる若い人たちに比べ人材として何も利点がない。

それはそれとして。

  • 今日もガスマスク(◎甘◎) 無しで肺が爛れるようなこともなく「普通に」空気が吸える
  • それは生産者たる植物の光合成のお陰で、それを手伝う微生物・菌のお陰でもあると知っている
  • 植物の光合成や細胞単位のエネルギー交換作用も全てはこの世界に満ち溢れる元素のお陰
  • そもそも酸素濃度が数%前後するだけで中毒起こして死ぬひ弱な人類が生きられる環境が数千年、数万年続いてる事自体が奇跡としか言いようがない
  • しかし我々は日常それらを「当たり前」としか認識していない。このこと自体が贅沢の極みだ。
  • 朝「普通に」目が覚めてベッドから起き出して自分の足で歩きこの世界が濁りもなく視える
  • お金に困ることは多々あれど、月に数回カレー喰うぐらいの自由は充分にある
  • 毎晩学習を終えブラウザとかを閉じた時、バックグラウンドで10分毎に入れ替わってる愛しきいたち娘たちの写真を見る度に胸がじーんとする&此岸から認知できない彼岸の世界での娘たちの幸福を祈る
  • 最近深夜3時頃に近所で騒いでるカラスの鳴き声もかわいいと感じる
  • O阪城の外堀で見かける鴨やらの穏やかさと水面下ではけっこう必死こいて水を掻いてる姿にも教わるものが多いと思う
  • 時々室内に迷い込む蜘蛛や羽虫にも愛着を感じ傷つけまいとする自分の一面ってもはや仏陀か
  • 学習の合間に読んだ『K2(スー○ード○ターK)』でその回1話限り登場の患者(プレス機に挟まれ利き手全指なくした40代未婚男)の泣き顔1コマで泣ける自分の共感性の高さに感動した!
  • その他etc.

不満・不安、過去への後悔・罪悪感、未来の心配
それはそれでありつつも 今日1日だけで書き出してもこれだけ「今ある」「かつてあった」ものに生かされ感謝してる自分の価値は何ができるとかできないとか得意不得意とか最低ダメダメな一面もあるとか先天的後天的疾患や欠陥欠損があるとかで左右されるものではないということを識っている

つまり

今のままでも何も問題はない。
ただ、昨日の自分よりも更に素敵になれたらもっと素晴らしいというだけだ。

社会貢献とは

  • 1人1人が明るく幸せに生きること
  • 人生には失敗はあっても敗北はない
  • "unluckyman"がいるだけで"Looser"はいない
  • 近年世の中は後者の思考(嗜好)に寄っているが、それも人間の精神性の未成熟さゆえ
  • 社会は動物的本能の残る大脳辺縁系が命じる生存競争の時代から精神的進化・深化を促す成熟期に入っている
  • 逆に「こうでなければ幸せでない、ああなったら終わり、負け」といった価値観の流布(マウンティング大好きっ子の心理的錯覚とその連鎖)が世界を分断し暗くする
  • 福島原発事故の際に杉良太郎が発言したように、見栄えのいい社会貢献活動としては社会的地位やいわゆる成功、大きなお金が伴うが「福祉」とはそういうもの(それも一部だがその限り)ではない。
  • 人は劣等感に苛まれるより優越感に浸りたがる。しかしそのどちらも心理的疾患である。