Does :class_name for belongs_to have to be a string and why?

Seemingly, when I use a symbol, I get an ActiveRecord error stating 'Can't convert symbol into String.' Why can't I use a symbol here? Possibly this is a deeper misunderstanding of symbols in general on my part.

#ActiveRecord error class Book < ActiveRecord::Base   belongs_to :author, :class_name => :Person, :foreign_key => :author_id end

#works class Book < ActiveRecord::Base   belongs_to :author, :class_name => "Person", :foreign_key => :author_id end

Seemingly, when I use a symbol, I get an ActiveRecord error stating 'Can't convert symbol into String.' Why can't I use a symbol here? Possibly this is a deeper misunderstanding of symbols in general on my part.

Well symbols and strings are not interchangeable in general (and glancing briefly at the source, activerecord calls various methods only available on strings on the :class_name option).

Fred

... and you capitalised the symbol for ":Person".

Shouldn't the symbol be capitalized _if_ it worked in this scenario? The class name is capitalized, ie: class name = Person therefore: p = Person.new. Why would the symbol be lowercase?