1

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

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

像这样的东西,显然是行不通的。

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

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

4

1 回答 1

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 但有多行。

于 2013-04-24T18:57:11.860 回答