【发布时间】:2009-04-16 18:42:51
【问题描述】:
我认为我的问题最好作为一个例子来描述。假设我有一个名为“Thing”的简单模型,它有一些简单数据类型的属性。比如……
Thing
- foo:string
- goo:string
- bar:int
这并不难。 db 表将包含具有这三个属性的三列,我可以使用 @thing.foo 或 @thing.bar 之类的内容访问它们。
但我要解决的问题是,当“foo”或“goo”不再包含在简单数据类型中时会发生什么?假设 foo 和 goo 代表相同类型的对象。也就是说,它们都是“Whazit”的实例,只是具有不同的数据。所以现在事情可能看起来像这样......
Thing
- bar:int
但是现在有一个叫做“Whazit”的新模型看起来像这样......
Whazit
- content:string
- value:int
- thing_id:int
到目前为止,一切都很好。现在这是我卡住的地方。如果我有@thing,我该如何设置它以按名称引用我的 2 个 Whazit 实例(为了记录,“业务规则”是任何事物总是有 2 个 Whazit)?也就是说,我需要知道我拥有的 Whazit 基本上是 foo 还是 goo。显然,我不能在当前设置中执行 @thing.foo,但我希望这是理想的。
我最初的想法是为 Whazit 添加一个“名称”属性,这样我就可以获取与我的 @thing 关联的 Whatzits,然后通过这种方式选择我想要的 Whazit。不过这看起来很丑。
有没有更好的办法?
【问题讨论】:
标签: ruby-on-rails ruby activerecord