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