カロリーメイトください

Barbaroi Ware(バルバロイ・ウェア)という名前でアプリ開発してます

【新コーナー】『Ruby on Rails チュートリアル』「第7章 ユーザー登録」2

railstutorial.jp

序文

Railsチュートリアル16日目。

新コーナーが始まります。

進捗

  • 第7章 ユーザー登録
    • 7.3 ユーザー登録失敗

コード実装部分(一部)

/sample_app/app/controllers/users_controller.rb

class UsersController < ApplicationController
  def show
    @user = User.find(params[:id])
  end
  
  def new
    @user = User.new
  end
  
  # /usersにPOSTでアクセスしたとき(/signupのフォームからデータを送信したとき)に実行される
  def create
    # /signupから以下のようなハッシュデータが送信されてくる
    # {"utf8"=>"✓",
    #  "authenticity_token"=>"XXXXXXXXXX==",
    #  "user"=>{"name"=>"yjkym", 
    #  "email"=>"y@jk.ym", 
    #  "password"=>"[FILTERED]", 
    #  "password_confirmation"=>"[FILTERED]"},
    #  "commit"=>"Create my account"}
    
    # params[:user]でハッシュデータが取り出せる
    # @user = User.new(params[:user])    # 実装は終わっていないことに注意!
    
    # セキュリティ上、送信データの検証をしてやるべき
    # Strong Parametersというテクニックを使う
    @user = User.new(user_params)
    if @user.save
      # 保存の成功をここで扱う。
    else
      render 'new'
    end
  end
  
  private
    def user_params
      # paramsハッシュでは:user属性を必須とし、
      # 名前、メール、パスワード(確認)の属性を許可する
      # 返り値はハッシュ↓
      # {"name"=>"", "email"=>"", 
      #  "password"=>"", "password_confirmation"=>""} 
      params.require(:user).permit(:name, :email, :password,
                                   :password_confirmation)
    end
end

GitHub

github.com

実行結果

f:id:yjkym:20181204153202p:plain

感想

Railsチュートリアル7章2日目。もしくは3日目。

いよいよフォームからデータを投げるようなことをやりはじめて、学習速度がガクッと落ちた。

Strong Parametersとか散々やった記憶あるんだけど、やっぱり全然定着してないな。
まぁ仕方ないねー難しいもん。
例によって逐一コメントを書きながら進めていくが、いろんなファイルが絡み合ってきて処理の順番を追うだけでも一苦労。

今、MVCのどの部分で処理が行われているのかということをしっかり意識しながらやっていこう。
明日からは。

カロリーメイトください。

今日のunityroom

(2曲)音ゲー譜面自動生成(音ゲー素案) | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう
www.youtube.com
音ゲー少ないのでいいですね。
ランキングつけてunity1週間ゲームジャムにあわせて出せば凄腕のお兄さんたちが競ってやってくれそうです。

このコーナーがいつまで続くかは不明。