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

Validations in Ruby

Validations in Ruby

Krzysztof Wawer

March 23, 2016
Tweet

More Decks by Krzysztof Wawer

Other Decks in Programming

Transcript

  1. V
    ALIDATIONS IN Ruby
    Krzysztof W
    a
    wer
    23.03.2016
    TRUG

    View Slide

  2. ABOUT ME
    • E-MAIL:
    krzysztof.w
    a
    [email protected]
    • Twitter:

    https://twitter.com/w
    afcio
    • GITHUB:

    https://github.com/w
    afcio

    View Slide

  3. V
    ALIDATION ???

    View Slide

  4. Ruby on rails
    ACTIVE MODEL & ACTIVE RECORD
    Active Model
    Active
    Record

    View Slide

  5. ACTIVE MODEL
    V
    ALIDATIONS
    • acceptance
    • confirmation
    • exclusion
    • format
    • inclusion
    • length
    • numericality
    • presence
    • uniqueness*

    View Slide

  6. UNIQUENESS V
    ALIDATION
    [email protected] exists ?
    [email protected] exists ?
    Email doesn’t exist
    Email doesn’t exist
    Create [email protected]
    Create [email protected]
    Created!
    Created!
    1 2

    View Slide

  7. UNIQUENESS V
    ALIDATION

    View Slide

  8. UNIQUENESS V
    ALIDATION
    [email protected] exists ?
    [email protected] exists ?
    Email doesn’t exist
    Email doesn’t exist
    Create [email protected]
    Create [email protected]
    Created!
    ActiveRecord::RecordNotUnique
    1 2

    View Slide

  9. Ruby on Rails
    • Strong Parameters
    http://edgeguides.rubyonrails.org/action_controller_overview.html#strong-parameters

    View Slide

  10. STRONG PARAMETERS
    { name: „John”, surname: „Doe” }
    { name: „John” }

    View Slide

  11. STRONG PARAMETERS
    { name: „John”, surname: „Doe” }
    ActionController::UnpermittedParameters: found unpermitted keys: surname
    ActionController::Parameters.action_on_unpermitted_parameters = :raise

    View Slide

  12. HTTP Requests
    GET
    POST
    GET, POST (JSON)
    String
    String
    String
    Integer

    View Slide

  13. HANAMI
    http://hanamirb.org
    https://github.com/hanami
    •hanami-controller
    •HANAMI-MODEL
    •HANAMI-HELPERS
    •HANAMI-MAILER
    •HANAMI-VIEW
    •HANAMI-V
    ALIDATIONS
    •HANAMI-ASSETS
    •HANAMI-UTILS
    Luca Guidi

    View Slide

  14. HANAMI-V
    ALIDATIONS
    https://github.com/hanami/v
    alidations#v
    alidations
    •ACCEPTANCE
    •CONFIRMATION
    •EXCLUSION
    •INCLUSION
    •PRESENCE
    •FORMAT*
    •SIZE*
    •TYPE (Coercions)

    View Slide

  15. HANAMI-V
    ALIDATIONS
    • numericality V
    ALIDATION DoesN’t Exist
    • „The framework will treat as V
    alid any blank
    attributes, without PRESENCE, for both FORMAT and SIZE
    predicates.”

    View Slide

  16. DRY
    https://github.com/dry-rb
    •DRY-AUTO_INJECT
    •DRY-COMPONENT
    •DRY-CONFIGURABLE
    •DRY-CONSTRUCTOR
    •DRY-CONTAINER
    •DRY-EQUALIZER
    •DRY-INITALIZER
    •DRY-LOGIC
    •DRY-PIPELINE
    •DRY-TRANSACTION
    •DRY-TYPES
    •DRY-V
    ALIDATION

    View Slide

  17. DRY-V
    ALIDATION
    LATEST VERSION: 0.7.0
    RELEASE DATE: 16.03.2016
    http://dry-rb.org/gems/dry-v
    alidation/

    View Slide

  18. DRY-V
    ALIDATION
    When to use?
    V
    ALIDATION OF:
    • form params
    • „GET” params
    • JSON params
    • Y
    AML DOCUMENTS
    • application configuration
    • replacement of ActiveRecord / ActiveModel::Validations
    • replacement of StrongParameters
    • …

    View Slide

  19. ???

    View Slide