我正在针对旧数据库编写 Rails 应用程序。此旧数据库中的一个表有一个名为object_id
。很遗憾object_id
也是 Ruby 中每个对象的属性,因此当 ActiveRecord 尝试使用这些对象来制定查询时,它使用 Ruby 定义的object_id
,而不是数据库中的值。
遗留应用程序的代码量超过一百万行,因此简单地更改数据库中的列名称将是最后的选择。
问题:
1. 有什么方法可以让ActiveRecord/Rails 使用该列的别名或同义词吗?
2.Ruby中有什么方法可以使object_id
方法的行为有所不同,具体取决于调用它的人是谁?
3.我可以简单地重写模型中object_id方法的行为吗(我认为这是一个糟糕的主意,但不得不问)
非常感谢任何建议。
我只是在这里吐痰,但你可以尝试这样的事情:
class Legacy < ActiveRecord::Base
#... all the other stuff
#give yourself a way to access the DB version of object_id
def oid
attributes[:object_id]
end
def oid=(val)
attributes[:object_id]=val
end
#restore ruby's default #object_id implementation
def object_id
super
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)