首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >遗留数据库架构-键/值表

遗留数据库架构-键/值表
EN

Stack Overflow用户
提问于 2012-09-11 22:18:27
回答 1查看 150关注 0票数 0

我已经得到了一个遗留数据库模式,它由类似于以下内容的对象组成:

代码语言:javascript
运行
复制
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中做到这一点呢?

澄清一下:

基本上,我希望下面的代码能起作用

代码语言:javascript
运行
复制
@car = Car.first
@car.something = something
@car.someprop = something

然而,在上面的代码中,@code.someprop实际上是@car.properties.where( "keyname = ?", "someprop" ).value

显然,我不想每次都执行SQL查询,所以我正在寻找一种很好的方法来实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2012-09-11 22:53:44

除非我低估了,否则它应该是这样简单的:

代码语言:javascript
运行
复制
class CarProperty < ActiveRecord::Base
   set_primary_key :oid

   belongs_to :car
end

class Car < ActiveRecord::Base
   set_table_name :car
   set_primary_key :oid

   has_many :car_properties

   accepts_nested_attributes_for :car_properties
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12371838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档