I have an ActiveRecord question...
I have a legacy MySQL database with a weird naming convention - all
table and column names have a prefix ''_'' , which is annoying,
and
some
of the column names are plain misnomers.
I would like to apply a pre-defined mapping between MySQL column names
and method names to be used in the Ruby class, without having the
underlying
column names being visible anymore.
How can I pre-define a static mapping of all (legacy) column names to
new
Class method names?
e.g.: given legacy schema:
Table _fix has columns:
_job
_ change
_date
_effect
When defining the Ruby class, I''d like to do something like this:
class Fix < ActiveRecord::Base
self.table_name = "_fix"
use_mapping ( # imaginary construct..
:_job => "job_id",
:_change => "change_id" ,
:_date => "date" ,
:_effect => "status")
self.primary_key = "job_id" # no more reference to _job column
end
and want to access it like this:
Fix.find( id ).status = "partial fix" # should update the column
_effect in table _fix
# and i want to see this :-)
Fix.find( id )._job
NoMethodError: undefined method ''_job'' for ...
Fix.find( id )._effect
NoMethodError: undefined method ''_effect'' for ...
The schema of the underlying legacy database should not be modified in
any way.
Is there a way to do this? Is there a way to code a helper method for
ActiveRecord::Base
which does the above mapping?
thanks
Tilo
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---