$30 off During Our Annual Pro Sale. View Details »

validationについて

ryonext
December 16, 2015

 validationについて

ryonext

December 16, 2015
Tweet

More Decks by ryonext

Other Decks in Programming

Transcript

  1. WBMJEBUJPOʹ͍ͭͯ

    View Slide

  2. ࣗݾ঺հ
    w גࣜձࣾϢχίϯ
    w 5XJUUFS!SZPOFYU
    w ήʔϚʔ
    w ΋Μ͸Μͱ͔εϓϥτΡʔϯͱ͔
    w ;ͩΜ͸3BJMT΍ͬͯ·͢

    View Slide

  3. ࠷ۙͷਐḿͰ͢
    w ࠓճ͸ΏͬͨΓ΍ͬͯΔͷͰ·ͩ)3Ͱ͢
    w ΤϯδχΞϞϯϋϯ4MBDL্ཱͪ͛ͯΔͷͰڵຯ͋Δํ͓
    ੠͕͚͍ͩ͘͞

    View Slide

  4. ษڧձʗίϛϡχςΟ
    w 4IJCVZBSC
    w :PLPIBNBSC
    w ,BXBTBLJSC
    w ͋ͨΓʹࢀՃͯ͠·͢ɻ

    View Slide

  5. ձࣾͰ΍͍ͬͯΔ͜ͱ
    ւ֎޲͚ήʔϜΩϡʔϨγϣϯαʔϏεͷ
    3PDL6.FEJBDSBGU IUUQTNFEJBDSBGUSPDLVBQQTDPN
    ΍
    ւ֎޲͚ήʔϜϑΥʔϥϜͷ
    3PDL65BML IUUQTUBMLSPDLVBQQTDPN
    ͷ։ൃΛ΍͍ͬͯ·͢ɻ

    View Slide

  6. ࠓ೔࿩͢͜ͱ
    w γεςϜͷͨΊͷWBMJEBUJPOʹ͍ͭͯ
    w 3BJMTͰWBMJEBUJPO͢Δ࿩
    w %#Ͱ੍໿Λ͔͚Δ࿩
    w 69ͷͨΊͷWBMJEBUJPOʹ͍ͭͯ
    w +4ͰWBMJEBUJPO͢Δ࿩

    View Slide

  7. ίʔυʹ͍ͭͯ
    w ίʔυ͸ීஈࢲ͕ۀ຿Ͱ࢖͍ͬͯΔ3BJMTͰͷ࣮
    ૷ྫʹͳΓ·͕͢ɺ8FCϑϨʔϜϫʔΫશൠʹ
    ͍ͭͯಉ͜͡ͱ͕ݴ͑ΔΜ͡Όͳ͍͔ͳ͊ͱࢥ
    ͍·͢

    View Slide

  8. WBMJEBUJPO͠·͠ΐ͏

    View Slide

  9. Ϣʔβ໊ͷཁ݅͸͜ΕͰ
    w ௕͞จࣈ·Ͱ
    w ඞਢ

    View Slide

  10. 3BJMTͩͱ
    class User < ActiveRecord::Base
    validates :name, length: { maximum: 20 }, presence: true
    end

    View Slide

  11. ͜͏ͳΔ

    View Slide

  12. ؆୯ʂ

    View Slide

  13. ͱ͜Ζ͕

    View Slide

  14. 3BJMTͷWBMJEBUJPO͸ΞϓϦϨΠϠʔͰ
    ݕূՄೳͳϝιουͷ৔߹ʹͷΈ
    ݕূ͢Δ͚ͩͳͷͰ

    View Slide

  15. ௚઀Ϩίʔυʹ*OTFSU
    w */4&35JOUPVTFSTTFUOBNF
    B@OBNF@UIBU@JT@PWFS@UIBO@@DIBSBDUFST

    View Slide

  16. WBMJEBUJPO͕૸Βͳ͍ϝιου
    Λ࢖͏
    VTFSVQEBUF@DPMVNO OBNF
    MPOH@OBNF@UIBU@PWFS@UIBO@UXFOUZ@DIBSBDUFST

    VTFSTBWF WBMJEBUFGBMTF

    View Slide

  17. ͷΑ͏ͳૢ࡞Ͱɺ؆୯ʹ
    WBMJEBUJPOҧ൓ͷσʔλ͕࡞ΕΔ

    View Slide

  18. ͦͯ͜͠ΕΛը໘͔Β
    ૢ࡞͠Α͏ͱ͢Δͱ
    w ࠓճͷૢ࡞Ͱ໊લΛมߋ͍ͯ͠ͳ͍ʹ΋͔͔Θ
    Βͣɺ໊લͰΤϥʔʹͳΔ
    มߋͨ͠ͷ͸͜͜

    View Slide

  19. ͞Βʹ

    View Slide

  20. ύεϫʔυมߋը໘
    w ଞͷઃఆը໘ͱ͸੾Γग़ͯ͠ɺύεϫʔυ͚ͩ
    Λมߋ͢Δը໘ͱ͍͏ͭ͘Γ͸Α͋͘Δͱࢥ͍
    ·͢

    View Slide

  21. ύεϫʔυΛมߋ͢Δը໘ͳͷʹɺ
    ໊લ͕௕ͯ͘ΤϥʔͱݴΘΕΔ
    w ΋ͪΖΜɺ͜ͷը໘Ͱ໊લΛม͑Δ͜ͱ͸Ͱ͖ͳ͍
    w Ϣʔβ͸Ͳ͏͠Α͏΋ͳ͍

    View Slide

  22. ͕ͨͬͯ͠
    w 8FCΞϓϦϨΠϠʔͰͷ੍໿͚ͩͰ͸ͳ͘ɺ͖ͬ
    ͪΓͱ%#Ͱͷ੍໿ΛೖΕ·͠ΐ͏

    View Slide

  23. class CreateUsers < ActiveRecord::Migration
    def change
    create_table :users do |t|
    t.string :name, limit: 20, null: false
    t.string :password
    t.timestamps null: false
    end
    end
    end
    %#ʹMJNJUͱOPUOVMM੍໿Λֻ͚
    Δʢ3BJMTͷNJHSBUJPOͰ΍Δྫʣ

    View Slide

  24. Μɺ͡Ό͋%#ͷ੍໿͚ͩష͓͚ͬͯ͹ɺ
    3BJMTͷWBMJEBUJPOཁΒͳ͍Μ͡ΌͶʁ

    View Slide

  25. ͱ͍͏Θ͚Ͱ΍ͬͯΈΔͱ

    View Slide

  26. WBMJEBUJPOΤϥʔ͕ฦ͍ͬͯͨ
    ՕॴͰΤϥʔʹ

    View Slide

  27. ͡Ό͋͜ͷ%#ͷΤϥʔΛྫ֎DBUDIͯ͠ɺ
    ద੾ͳΤϥʔϝοηʔδΛฦ͢Α͏ʹ
    ͯ͠΍Ε͹ɾɾɾ

    View Slide

  28. ͦΕɺ3BJMTͷWBMJEBUJPOͷ
    ํָ͕͡ΌͶ

    View Slide

  29. ͱ͍͏Θ͚Ͱ
    w %#ͷ੍໿͸γεςϜΛकΔͨΊʹઈରʹֻ͚·
    ͠ΐ͏ɻ͕͜͜ΞϓϦϨΠϠʔͰͷWBMJEBUJPOΑ
    ΓΏΔ͍ͱ͍͏͜ͱ͕͋ͬͯ͸͍͚ͳ͍ɻ
    w ΞϓϦϨΠϠʔͰ΋ɺແବͳΫΤϦൃߦΛ͠ͳ
    ͍ʗΤϥʔॲཧΛద੾ʹ͢ΔͨΊʹWBMJEBUJPOΛ
    ΍Δ͜ͱΛڧ͘ਪ঑͠·͢ɻ

    View Slide

  30. ΊͰͨ͠ΊͰͨ͠

    View Slide

  31. Ͱ͸ͳ͍ʂ

    View Slide

  32. ͜͜·Ͱ
    w γεςϜͷͨΊͷWBMJEBUJPOͷ࿩

    View Slide

  33. ͔͜͜Β
    w 69ͷͨΊͷWBMJEBUJPOͷ࿩

    View Slide

  34. 69ͷͨΊͷWBMJEBUJPOͱ͸ʁ
    w Α͋͘ΔϢʔβొ࿥ϑΥʔϜ

    View Slide

  35. Ϣʔβ*%ΛೖΕͯΈΔ
    w ొ࿥ϘλϯΛԡ͢ͱ͢Ͱʹ࢖ΘΕ͍ͯ·͢ɺͱΤ
    ϥʔ͕ฦͬͯ͘Δ

    View Slide

  36. ผͷ*%Λࢼ͢
    w ·ౖͨΒΕΔ

    View Slide

  37. ͞Βʹผͷ*%Λࢼ͢
    w ·ͨ·ͨΤϥʔʹͳΔ

    View Slide

  38. Ϣʔβʔ͸ౖͬͯ
    ཭୤ͯ͠͠·͏

    View Slide

  39. Ͳ͏͢Ε͹͍͍ͷ͔ʁ
    w ೖྗ͢ΔϘλϯԡ͢Τϥʔ͕ฦͬͯ͘
    Δɺͱ͍͏Ұ࿈ͷྲྀΕΛ܁Γฦ͢ͷ͸ۤ௧
    w ೖྗͨ࣌͠఺Ͱɺͦͷೖྗ͕ड͚ೖΕՄೳ͔Ͳ
    ͏͔ΛΘ͔ΔΑ͏ʹ͢Δ΂͖

    View Slide

  40. Ϣʔβ͕ೖྗΛऴ͑ͨλΠϛϯάͰϑΟʔυόοΫ
    μϝͳ৔߹͸ͦ΋ͦ΋ԡͤͳ͘͢Δ

    View Slide

  41. ੒ޭ͢Δ৔߹΋ڭ͑ͯ͋͛Δ

    View Slide

  42. w %#Ͱ๷͙ͷ͸γεςϜͷͨΊͷWBMJEBUJPO
    w Ϣʔβʹշదʹೖྗͯ͠΋Β͏ͨΊͷɺ69ͷͨ
    ΊͷWBMJEBUJPO͕ඞཁ

    View Slide

  43. Ͳ͏࣮ݱ͢Δ͔ʁ
    w ઌఔͷྫ͸ɺ%#಺ͰͷॏෳνΣοΫ͕ඞཁͳͷ
    Ͱ+BWBTDSJQU"1*ͷ࿈ܞ͕ඞཁͳέʔεɻ
    ͪΐͬͱ΍΍͍͜͠ͷͰ͋ͱͰɻ
    w ·ͣ͸ɺ'PSN͚ͩͰ൑அͰ͖Δɺʮඞਢೖྗʯ
    ʮ௕੍͞ݶʯʮϑΥʔϚοτνΣοΫʯʹ͍ͭ
    ͯ࿩͠·͢ɻ

    View Slide

  44. 'PSNͰ൑அ͢ΔWBMJEBUJPO
    w ྫ͑͹ɺ)5.-ʹ͸SFRVJSFEଐੑ΍FNBJMଐੑ
    ͳͲ͕͋Δ
    w ೖྗඞਢ߲໨ʹೖྗ͍ͯ͠ͳ͔ͬͨΓɺࢦఆͷ
    ϑΥʔϚοτʹͳ͍ͬͯͳ͔ͬͨΒϒϥ΢βϨ
    ϕϧͰΤϥʔΛฦͯ͘͠ΕΔ
    w ·͋ศར

    View Slide

  45. name="account[username]" id="account_username" />

    View Slide

  46. ͱ͜Ζ͕
    w ಈ͔ͳ͍ϒϥ΢β͕

    View Slide

  47. w ΋͋Δ͚Ͳɺͦ͏͍͏Ϩϕϧͷ࿩Ͱ͸ͳ͘
    w *&͸ࢮΜͩʂ΋͏͍ͳ͍ʂ
    ΍͋

    View Slide

  48. 4BGBSJ
    w ಈ͔ͳ͍
    w ࠷৽ͷ.BD04 J04Ͱಈ͔ͳ͍
    w ͜ΕͰಈ͔ͳ͍Ҏ্ɺීٴ཰Λߟ͑ΔͱཔΕͳ
    ͍ͱߟ͑Δ΂͖

    View Slide

  49. +BWBTDSJQUͰ΍Δ
    w K2VFSZͳΒ͍͔ͭ͘ϓϥάΠϯ͕͋Δ
    w 7VF 3FBDU "OHVMBS౳ͷϑϨʔϜϫʔΫΛ࢖༻
    ͍ͯ͠ΔͳΒɺͦ͜Ͱͷྲّྀʹै͏ͱ࣮૷ָ͕
    ͳ͸ͣ

    View Slide

  50. ௨৴͕ඞཁͳ΍ͭ͸ɺ
    ೖྗͷλΠϛϯάͰ௨৴ͯ݁͠ՌΛग़ͯ͠΍Δ

    View Slide

  51. ͜͏͍͏Πϝʔδ
    'PSN
    Ϣʔβ +BWBTDSJQU
    "1*
    %#
    ೖྗ มߋΛݕ஌
    ೖྗ಺༰ΛૹΔ
    %#ʹ໰͍߹Θͤ
    0,/(
    0,/(
    0,ʗ/(

    View Slide

  52. +4͔ΒݺͿ
    ʢલεϥΠυ ͷεςοϓ

    4 $ ->
    5 $("#username").keyup(->
    6 $.get(
    7 "/accounts/exists",
    8 { username: $('#username').val() },
    9 (data) ->
    10 if data.result
    11 $("#account-result").html("͜ͷϢʔβ໊͸࢖ΘΕ͍ͯ·͢")
    12 $("#submit-button").prop("disabled", true)
    13 else
    14 $("#account-result").html("͜ͷϢʔβ໊͸࢖༻ՄೳͰ͢")
    15 $("#submit-button").prop("disabled", false)
    16 )
    17 )
    18
    w $P⒎FF4DSJQUͰ͢
    w ࣮ࡍʹLFZVQͰ΍Δͱ௨৴ස౓ଟ͗͢ΔͷͰEFCPVDF͢ΔQMVHJOͳͲ࢖͍·͠ΐ͏
    w ྫ͸K2VFSZͰ͕͢ɺԿΒ͔ͷϑϨʔϜϫʔΫΛ࢖͏ͷ΋ΦεεϝͰ͢

    View Slide

  53. ֬ೝ༻"1*࡞Δ
    ʢdͷεςοϓ

    Rails.application.routes.draw do
    resources :accounts do
    collection do
    get "exists", to: "accounts#exist"
    end
    end
    end
    class AccountsController < ApplicationController
    def exist
    if Account.exists?(username: params[:username])
    render json: { result: true }.to_json
    else
    render json: { result: false }.to_json
    end
    end
    end

    View Slide

  54. ͜͜Ͱ
    w +4ͷWBMJEBUJPO͚ͩ΍͓͚ͬͯ͹ɺ%#ͷ੍໿ཁ
    Βͳ͍Μ͡Όͳ͍ʁ

    View Slide

  55. Μͳͨ͜ʔͳ͍
    w +4͸ඇରԠϒϥ΢βʗΦϑʹ͢Δʗ௚઀1045
    ͷ63-Λୟ͘౳ɺճආ༨༟

    View Slide

  56. w +4ͱ%#͚ͩ΍͓͚ͬͯ͹3BJMTͷ΍ͭ͸͍Βͳ
    ͍Μ͡Όͳ͍ʁ

    View Slide

  57. ͋·ΓΑ͘ͳ͍
    w +4ճආ͢ΔΑ͏ͳΞΫηεʹରͯ͠ɺ3BJMTͰద
    ੾ͳWBMJEBUJPOͰΤϥʔϝοηʔδΛฦͯ͠΍Δ
    ඞཁͳ͍·͋Θ͔Δ
    w %#ʹରͯ͠ແବͳ௨৴ʗΫΤϦ͕ൃߦ͞ΕΔՄ
    ೳੑ͕͋ΔΑ͘ͳ͍

    View Slide

  58. ͞Βʹ
    w "1*Խ΋͢ΔͷͰ͋Ε͹ɺ3BJMTͷNPEFMʹΑΔ
    WBMJEBUJPO͕๷͙ՕॴͱͳΔ
    w େͨ͠खؒͰ͸ͳ͍ͷͰɺNPEFMͰͷWBMJEBUJPO
    ΋΍͓ͬͯ͘΄͏͕ྑ͍ɻ

    View Slide

  59. 8FCΞϓϦͰ͸ͳ͘εϚϗͷ
    ৔߹͸ʁ
    w "1*αʔόཱͯͯɺεϚϗ͔Β"1*Λୟ͘΍ͭ

    View Slide

  60. 69ͷͨΊͷWBMJEBUJPO͸
    ΫϥΠΞϯτଆͰ
    w +4ͷ࣌ͱಉ͡Α͏ʹɺۃྗແବͳ௨৴Λൃੜ͞
    ͤͣʹɺϢʔβͷೖྗʹରͯ͠ૉૣ͘ϑΟʔυόο
    ΫΛฦ͢

    View Slide

  61. αʔόଆ
    w %#ଆ͸ݴ͏·Ͱ΋ͳ͘ඞཁ
    w ΫϥΠΞϯτ͕όά͍ͬͯΔՄೳੑ΋͋ΔͷͰɺ
    8FCΞϓϦͷNPEFM૚ͰͷWBMJEBUJPO΋ඞཁɻ

    View Slide

  62. ·ͱΊ
    w ࠷ޙඌ %#
    Ͱෆਖ਼ͳ஋͸ઈର๷ޚ͢Δγες
    ϜͷͨΊͷWBMJEBUJPO
    w ࠷લྻ +4 ΫϥΠΞϯτΞϓϦ
    Ͱਖ਼ৗೖྗͷͨ
    ΊͷಋઢΛ࡞ͬͯ͋͛Δ69ͷͨΊͷ
    WBMJEBUJPO

    View Slide

  63. ͝੩ௌ͋Γ͕ͱ͏
    ͍͟͝·ͨ͠

    View Slide