attribute_present? incorrectly returns true for empty strings #5314

Jacobkg opened this Issue Mar 7, 2012 · 0 comments


None yet
2 participants

Jacobkg commented Mar 7, 2012

The specification for attribute_present? says that it should return false if the attribute is nil or empty:

"Returns true if the specified attribute has been set by the user or by a database load and is neither nil nor empty? (the latter only applies to objects that respond to empty?, most notably Strings)."

However, the code is here:

def attribute_present?(attribute)
value = read_attribute(attribute)
!value.nil? || (value.respond_to?(:empty?) && !value.empty?)

The part that reads !value.nil? will return true for empty strings, and since it is an OR, will ignore the second part.

@josevalim josevalim closed this Mar 7, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment