Rails4.2から関連のバリデーションをちょっと気持ちよく書ける

Rails4.2 betaが出ましたねー。Sidekiqのようなジョブが標準で使えるようになったり(ActiveJob)、ActiveRecordのfindを爆速にしてくれるAdequateRecordが搭載されたり、かなり期待の高まっているバージョンです。

Add a required option to singular associations

そんな中、地味ですが素敵な変更が。Add a required option to singular associationsというプルリクです。

今まで

belongs_to :account
validates_presence_of :account

と書いていた関連のバリデーションを、

belongs_to :account, required: true

と書けるようにする変更です。地味だけど素敵! has_oneも同じようにrequiredオプションをつけることができます。

更にvalidationつながりでwith_optionsも便利になりました。(Add implicit receiver support to Object#with_options

class User < ActiveRecord::Base
  with_options if: :doctor? do |admin|
    admin.validates :hospital_name, presence: true
    admin.validates :speciality, presence: true
  end
end

みたいに、ブロック引数をつけなければならなかったのが、

class User < ActiveRecord::Base
  with_options if: :doctor? do
    validates :hospital_name, presence: true
    validates :speciality, presence: true
  end
end

と、簡潔に書けるようになりました。これも地味だけど素敵!

Rails4.2は地味だけど素敵な変更がたくさんあるので、どんな変更があるのか確認するついでのこの機会に、プルリクのコードを読んでみるのも良いかも知れません。せっかくの連休ですしね!