2013-03-28 41 views
4

我有一個表與DATE_OF_BIRTH Postgres的和想用Postgres的年齡函數返回的年齡,而不是計算的Rails(這是一個簡單的例子歲的時候,我會想在postgres中做更復雜的計算)。如何使用Rails的PostgreSQL的功能

什麼是讓年齡與我的紀錄的其他Postgres的背部,理想狀態爲標準,而不必修改每一個選擇的最佳方式?

編輯:

我已經決定使用意見,因爲:

  1. 我的數據庫會比其他軌道以外的應用中,我想定義,他們都可以使用常用功能。
  2. 我想控制訪問過多個應用程序的數據。
  3. 這需要一些處理從應用服務器了。
  4. ,如果我用了很多計算領域。更可擴展性。
+0

在這[非foolsy 4月1日的博客文章所述技術(http://momjian.us/main/blogs/pgblog/2013.html#April_1_2013)也可能是有用的。儘管如此,你仍然需要解決ActiveRecord的問題。同樣,具有'select'調用的默認範圍可能(或可能不)有所幫助。 –

+0

@ muistooshort,謝謝,請參閱我的帖子更新。 –

回答

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

是的,這將增加的方法,age,以前不上Person

存在你也可以別名的新方法比函數名以外的東西:

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

感謝您的回覆,這回答了我的直接問題,但是我已決定使用不同的解決方案 - 請參閱編輯原始帖子。 –