ActiveRecord可以调用本机数据库功能吗?

时间:2013-04-24 18:47:54

标签: ruby-on-rails ruby postgresql activerecord

无论如何在ActiveRecord中使用本机数据库函数?

示例:假设我想在Postgres中使用now()。我不想使用Time.now,因为我希望使用数据库时间,而不是Rails服务器时间。

这样的东西,显然不起作用。

TableCommon.new( {:upd_date => now()} )

注意:这是一个 人为的 示例。我不想使用now(),但我想使用其他数据库函数,并希望知道如何通过ActiveRecord使用它。

1 个答案:

答案 0 :(得分:3)

是的,您可以通过连接直接访问

TableCommon.new( :upd_date => TableCommon.connection.select_value("now()") )

connection.select_value返回单个结果,忽略其余结果:

   ActiveRecord::Base.connection.select_value("select 1,2")  #returns 1

connection.select获取哈希值:

   ActiveRecord::Base.connection.select("select 1 as a ,2 as b")  #{"a"=>1, "b" =>2}

connection.select_all将给出一个哈希数组,每行一个,如select。

connection.select_values将给出一个数组,其值来自每行的第一个值。它就像select_value但有多行。