Rails: dry-rbでForm Objectを作る(翻訳)

概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Rails Form Objects With dry-rb 原文公開日: 2016/09/06 著者: Michał Gutowski サイト: http://cucumbersome.net/ Rails: dry-rbでForm Objectを作る(翻訳) 現代のRailsでは、Form Objectを作るのは珍しくありません。多くのRuby開発者はVirtusやActiveModel::ValidationsをincludeしてForm Objectを作成することに慣れています。本記事では、dry-typeとdry-validationを使ってForm Objectを作成する方法をご紹介したいと思います。 絵ハガキ(postcard)を作成する簡単なForm Objectを作ってみましょう。このアプリには次の3つのモデルがあります。 Country: フィールドはnameとis_state_required。2つ目のフィールドは正しいアドレスの作成に使われ、米国などのユーザーは州名の入力が必要です。 Country::State: フィールドはnameとcountry_id。 Postcard: フィールドはstate_id、country_id、content、address。 完了までの作業を定義する フォームで新しい絵ハガキを作成する(だいたいおわかりですね) 住所、市町村、郵便番号、コンテンツ、国のバリデーションを行う 郵便番号フォーマットのバリデーションを行う コンテンツの長さのバリデーションを行う(ツィートやテキストメッセージ並に短くしたい場合) 選択した国で州名が必要な場合、州名の存在のバリデーションも必要 属性と型 まずは属性の定義から行います。Form ObjectはDry::Types::Structから継承する必要があります。必要なゲッターやコンストラクタはDryで定義されます。 class Postcard module Types include Dry::Types.module end class CreateForm < Dry::Types::Struct attribute :address, Types::Coercible::String attribute :city, … Continue reading Rails: dry-rbでForm Objectを作る(翻訳)