[RUBY] Essayez de créer avec Trailblazer

introduction

Après avoir appris l'existence de Gem et Trailblazer, qui fournissent une couche abstraite, j'ai essayé Create. Le contour de Trailblazer est expliqué dans d'autres articles de manière facile à comprendre, je vais donc l'omettre.

Cet article était très facile à comprendre. Présentation de TrailBlazer j'ai essayé de résumer

environnement

ruby '2.7.2' 'rails', '~> 6.0.3' template engine: haml

Create

Structure de répertoires Trailblazer

.
└── todo
    ├── cell
    │   ├── index.rb
    │   └── new.rb
    ├── contract
    │   └── form.rb
    ├── operation
    │   ├── create.rb
    │   └── index.rb
    └── view
        ├── form.haml
        ├── index.haml
        └── new.haml

Operation


module Todo::Operation
  class Create < Trailblazer::Operation
    class Present < Trailblazer::Operation
      step Model(Todo, :new)
      step Contract::Build( constant: Todo::Contract::Form )
    end

    step Subprocess(Present) #présenter l'appel de l'étape de classe
    step Contract::Validate(key: :todo) #Validation par contrat
    step Contract::Persist() #Enregistrer dans le modèle
  end
end

Contract


module Todo::Contract
  class Form < Reform::Form
    include Reform::Form::ActiveModel
    property :title
    property :description
    property :completed
      
    validates :title, presence: true
    validates :description, length: { minimum: 2 }

    #Vous pouvez également remplacer
    # def title
    #  super.capitalize
    # end
  end
end

Cell

module Todo::Cell
  class New < Trailblazer::Cell
    include ActionView::RecordIdentifier
    include ActionView::Helpers::FormOptionsHelper
    include SimpleForm::ActionViewExtensions::FormHelper
  end
end

View

= simple_form_for(model, html: {novalidate: true}) do |f|
  = f.input :title, placeholder: "Title"
  %br
  = f.input :description, as: :text, placeholder: "Description"
  %br
  = f.submit 'Submit'
  = link_to 'Back', todos_path

Vérification

trab-todo

[Projet] J'ai essayé cette fois (https://github.com/izumiiii/trail-todo)

Article de référence

Résumé de la présentation de TrailBlazer trailblazer

Recommended Posts

Essayez de créer avec Trailblazer
Essayez DI avec Micronaut
Essayez WebSocket avec jooby
Créer une API XML-RPC avec Wicket
Essayez d'utiliser GloVe avec Deeplearning4j
Essayez la connexion DB avec Java
Essayez gRPC avec Java, Maven
Créez un terrain de jeu avec Xcode 12
Essayez de lire XML avec JDOM
Créer un micro service avec Spring Boot
Créer une classe immuable avec JAVA
Créez un environnement Vue3 avec Docker!
Créer un PDF avec la mise en page itext7-Free: Texte-
Créer un portfolio avec rails + postgres sql
Créez une application avec Spring Boot 2
Essayez d'exécuter cloudera manager avec docker
Créez un PDF avec la mise en page itext7-Free:
Essayez d'implémenter recaptcha avec Jetty intégré.
Essayez de manipuler les tableaux PostgreSQL avec JDBC
Créer une fonction de pagination avec Rails Kaminari
Essayez d'utiliser Redis avec Java (jar)
Créer un environnement de vérification SolrCloud avec Docker
Créer un fichier Excel avec POI
Créez une application avec Spring Boot
Créez deux DatePickers liés à TextField
Créer une application en ligne de commande avec maven
Essayez l'analyse syntaxique des phrases anglaises avec Stanford CoreNLP
Créez un PDF avec itext7 ~ HelloWorld ~
Essayez la communication bidirectionnelle avec gRPC Java
Essayez de créer une application client serveur
Créer ma page avec Rails
Créez des exceptions avec une interface fluide
Créons vous-même une instance avec .new. .. ..
[Java] Créer un module exécutable avec Gradle
Créez un fichier jar avec la commande
[Rails6] Créer une nouvelle application avec Rails [Débutant]
Créez une application Web simple avec Dropwizard
Créez votre propre validateur avec Bean Validation
Construire un environnement Rails 6 + MySQL avec Docker compose
Créez un lot à la demande simple avec Spring Batch
Essayez d'exécuter MySql et Blazor avec docker-compose
Essayons WebSocket avec Java et javascript!
[Retrait des rails] Créez une fonction de retrait simple avec des rails
Créer un environnement de développement Spring Boot-gradle-mysql avec Docker
Essayez d'utiliser Spring Boot avec VS Code
Essayez de vous serrer la main avec ARKit + Metal
[Docker] Créez un environnement Node.js + express + webpack avec Docker
Créer un graphique à barres simple avec MPAndroidChart
Essayez d'implémenter une fonction de connexion avec Spring-Boot