Rails with_optionsを使って部分的なバリデーションをしてみよう!

Rails Modelで一部のバリデーションをしたい場合についてです。

一部だけバリデーションしたい場合は、以下のようにModelに定義します。

 with_options on: :login do |login|
    login.validates :email, presence: true
    login.validates :password, presence: true
end

バリデーション時は以下のとおりです。

Rails4編

class TestModel < ActiveRecord::Base
    def valid_login
        self.valid?(:login)
    end
end

Rails5編(配列で指定ができるようになります)

class TestModel < ActiveRecord::Base
    def valid_login
        self.valid?([:login, :XXXX])
    end
end

 

部分ごとのバリデーションが必要な場合にとても便利な機能ですね。

参考になれば幸いです(*^^*)