Rails Good Parts

Railsにまつわる便利機能・デザインパターンはたくさんありすぎて、正直覚えきれないので、 個人的に役立ったものまとめていこうと思います。

ActiveModel

validation

バリデーションを特定のコンテキストでのみ実行する方法。

ActiveModel::Validations

class Person
  include ActiveModel::Validations

  attr_accessor :name
  validates_presence_of :name, on: :new
end

person = Person.new
person.valid?       # => true
person.valid?(:new) # => false

ActionView

disable_with

二重サブミット防止するために、Javascriptを書く必要なし!

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-submit_tag

submit_tag "Complete sale", data: { disable_with: "Submitting..." }

Patterns

Form Object

特定のコンテキストでしか利用しないバリデーション(例: 特定のユーザロールのみ、入力を必須としたいテキストフィールド)をModelレイヤで実装すると、複雑化することが多いように思います。 このようなケースでは、Form Object の導入は一つの選択肢になります。 blog.sundaycoding.com