rails/rails — Issue #5314: attribute_present? incorrectly returns true for empty strings
Author: Jacobkg
Created: 2012-03-07 05:18:15+00:00
State: open

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?)
end

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