Sha256: 5522054c68fc0a19ff63c71c8fedf702bd0bc5100881c8c4ed495d007ec6511e
Contents?: true
Size: 1.55 KB
Versions: 1
Compression:
Stored size: 1.55 KB
Contents
module Shoulda # :nodoc: module Matchers module ActiveRecord # :nodoc: # Ensures that the model is not valid if the given attribute is not # present. # # Options: # * <tt>with_message</tt> - value the test expects to find in # <tt>errors.on(:attribute)</tt>. <tt>Regexp</tt> or <tt>String</tt>. # Defaults to the translation for <tt>:blank</tt>. # # Examples: # it { should validate_presence_of(:name) } # it { should validate_presence_of(:name). # with_message(/is not optional/) } # def validate_presence_of(attr) ValidatePresenceOfMatcher.new(attr) end class ValidatePresenceOfMatcher < ValidationMatcher # :nodoc: def with_message(message) @expected_message = message if message self end def matches?(subject) super(subject) @expected_message ||= :blank disallows_value_of(blank_value, @expected_message) end def description "require #{@attribute} to be set" end private def blank_value if collection? [] else nil end end def collection? if @subject.class.respond_to?(:reflect_on_association) && reflection = @subject.class.reflect_on_association(@attribute) [:has_many, :has_and_belongs_to_many].include?(reflection.macro) else false end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
shoulda-matchers-1.0.0.beta2 | lib/shoulda/matchers/active_record/validate_presence_of_matcher.rb |