我有一个遗留数据库模式,它由类似于以下的对象组成:
table=car
oid, something, something_else, ...
has many properties -> car_properties
table=car_properties
oid, car_id, keyname, value, ...
belongs to car
Car 对象实际上(逻辑上)是“car”表中的列和“car_properties”表中的多行的组合。
我正在考虑对使用此架构的应用程序进行并行重写,因此我需要一些方法将此表架构映射回一个不错的 ActiveRecord 对象。理想情况下,我希望 _properties 表中的每个属性都可以作为“Car”类的方法访问,这样我以后可以更改基础表而不会破坏任何东西。
我可以静态定义 Car 类中的方法,但我想确保 ActiveRecord 魔法有效,因此 .save 之类的东西可以工作,并且我可以在以后更改底层架构(意识到这可能会中断应用)。
我将如何在 ActiveRecord 中执行此操作?
澄清:
基本上,我希望以下工作
@car = Car.first
@car.something = something
@car.someprop = something
然而在上面,@code.someprop
实际上是@car.properties.where( "keyname = ?", "someprop" ).value
显然,我不想每次都为此做一个 SQL 查询,所以我正在寻找一种很好的方法来做到这一点。