无论如何在ActiveRecord中使用本机数据库函数?
示例:假设我想在Postgres中使用now()。我不想使用Time.now,因为我希望使用数据库时间,而不是Rails服务器时间。
这样的东西,显然不起作用。
TableCommon.new( {:upd_date => now()} )
注意:这是一个 人为的 示例。我不想使用now(),但我想使用其他数据库函数,并希望知道如何通过ActiveRecord使用它。
答案 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但有多行。