how do i check if an object has a particular field?

Which answers the slightly different question: Does the database sitting under this Model contain a column called "complete"?

The OP asked about an object (and in particular and ActiveRecord object), so respond_to? is probably a more apropos answer. ActiveRecord overrides respond_to? so that it is true for attributes which may actually be handled by method_missing when actually called.

Consider if the OP had:   class Article     def complete       read_attribute(:finished)     end   end

In that case, Article.column_names.include?("complete") == false even though Article.new.respond_to?("complete") == true

-Rob

Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com

Wasn't there a recent change to core that may be important here? I remember reading something about cases where, in 1.2.3, respond_to? would be false because AR hadn't looked at the table yet, while Edge would correctly respond true. Or something like that.

Jay Levitt