如何在Rails中使用PostgreSQL函数

5
我在Postgres中有一个带有date_of_birth的表,并想使用Postgres age函数返回年龄,而不是在Rails中计算年龄(这是一个简单的例子,我将要在Postgres中进行更复杂的计算)。
最好的方法是如何从Postgres获取年龄和记录的其余部分,理想情况下标准化,而不必修改每个选择?
编辑:
我决定使用视图,因为:
  1. 我的数据库将被其他应用程序使用,除了rails,我还想定义所有应用程序都可以使用的公共函数。
  2. 我想控制多个应用程序对数据的访问。
  3. 它可以将一些处理过程从应用服务器中移开。
  4. 如果我使用大量计算字段,它会更具可伸缩性。

这篇非愚人节的博客文章中的技巧可能也会有用。但你仍然需要绕过ActiveRecord认为它知道一切的问题。同样,使用带有select调用的默认作用域可能会(或可能不会)有所帮助。 - mu is too short
@muistooshort,谢谢您,请查看我对帖子的更新。 - d_a_n
1个回答

3
people = Person.select('*, age(date_of_birth)')
people.each { |person| puts person.age }

是的,这将会添加一个以前在Person上不存在的方法age

您还可以将新方法别名为与函数名称不同的其他名称:

people = Person.select('*, age(date_of_birth) as foo')
people.each { |person| puts person.foo }

谢谢您的回复,这回答了我当下的问题,但是我已经决定使用另一种解决方案 - 请查看我原帖的编辑。 - d_a_n

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