I’m writing a Rails application against a legacy database. One of the tables in this legacy database has a column named object_id. Unfortunately object_id is also an attribute of every object in Ruby, so when ActiveRecord is trying to use these objects to formulate a query it is using the Ruby defined object_id, rather than the value that is in the database.
The legacy application is immense at well over a million lines of code, so simply changing the name of the column in the database would be an option of last resort.
Is there any way to make ActiveRecord/Rails use an alias or synonym for this column? (i.e. such that in my app I can access the value using the alias, but when AR generates SQL it uses the actual column name)
Is there any way in Ruby to make the object_id method behave differently, depending on who is calling it? (i.e. use database object_id when being called by activerecord, otherwise return ruby object_id)
Can I simply override the behavior of the object_id method in my model (I assume this is a terrible idea, but had to ask)
Any suggestions are greatly appreciated.