legacy fieldnames in model

Shauna wrote:

If I were creating a Rails app from scratch I would use Rails's naming
conventions for fieldnames (such as first_name). However, I am doing a
prototype for a legacy app that has fieldnames like FirstName and for
other reasons need to keep them that way. Trust me on that.

The validates_ series works fine with these legacy fieldnames, as do my
views and controllers. But when I try to add some methods to my model
that manipulate the names, Rails balks. For example,
  def full_name
    FirstName + ' ' +
      (if MI then MI + '. ' else '' end) +

This is based on an example from Ruby For Rails (p. 84). Rails gives me
"NameError in LoansController#list ... uninitialized constant FirstName
... This error occured while loading the following files:

I tried putting single quotes around 'FirstName' (that turned it into a
literal), using it as a symbol :FirstName, and putting brackets around
it. I know the syntax itself is okay because if I substitute
created_on.to_s for FirstName then that part is properly rendered by the

I understand that Rails is supposed to favor convention but allow you to
deviate if you must. So how do I refer to my nonstandard fieldnames
within model methods?

You can use either self.FirstName or self[:FirstName].

Or you can create a set of facade accessor methods, perhaps in a
loop, using the underscore method to de-camelize every field name.

Hi --