在运行时使用虚拟属性扩充Rails模型

3

我有一个Rails模型,它具有属性X、Y、Z。

我想在数据获取期间动态添加属性P、Q到这个模型中。属性P、Q不需要任何持久性,仅用于前端操作。

这是否可能?我可以通过将P、Q存储在另一个对象中并与原始模型一起操作来实现此目的,但想在这里询问最佳方法。

[rails 2.3.5,ruby 1.8.7]

1个回答

0

在你的模型中尝试类似这样的东西

def p
  @p || @p = fetch_p
end

这将允许您调用your_model.p。在第一次调用时,它将调用fetch_p函数并将其存储为类属性。在任何后续调用中,它将简单地返回缓存的值。


fetch_up 应该由您编写。它获取 p 的值,无论是通过某种方式计算还是从某个地方获取(文件、数据库等)。换句话说,fetch_p 在数据获取期间执行您所指的“动态添加属性 P 到此模型”的操作。 - David Sulc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接