如何在Rails中调用Postgres储存函数最佳方式?

5

我在Postgres中创建了一个函数,想从我的Rails代码中调用它。最佳方法是什么?是否有可用的ActiveRecord方法可以使用?或者我需要像Arel.sql一样使用SQL语句吗?


你有检查过这个吗? - Sebastián Palma
2
ActiveRecord 中没有特殊的方法,你需要使用 SQL。你可以像这样执行 Post.connection.execute("select version();").first - nathanvda
@nathanvda 谢谢,我已经这样做了,但是调用 first 并不足够,因为它返回了一个哈希,我需要从中提取我的值;所以我在 first 中添加了 .values.first,因为只返回了一个值。您想将其发布为您的答案吗? - Keith Bennett
1个回答

2

ActiveRecord中没有特殊的方法,您需要使用SQL语句来操作。您可以尝试以下代码:

Post.connection.execute("select version();").first 
=> {"version"=>"PostgreSQL 10.5 on x86_64-apple-darwin17.7.0, compiled by Apple LLVM version 9.1.0 (clang-902.0.39.2), 64-bit"}

这将按行返回一个哈希表,其中键是列名,值是相应的值。因此,对于这个特定的示例,我知道它只会返回一行,所以我使用first立即检索第一行。如果您只想立即检索版本,则可以编写

version = Post.connection.execute("select version();").first.values.first 
=> "PostgreSQL 10.5 on x86_64-apple-darwin17.7.0, compiled by Apple LLVM version 9.1.0 (clang-902.0.39.2), 64-bit"

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