1

ActiveRecord でネイティブ データベース関数を使用する方法はありますか?

例: Postgres で now() を使用したいとします。Railsサーバーの時間ではなく、データベースの時間を使用したいので、Time.nowを使用したくありません。

このようなものは、明らかに機能しません。

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 のように行ごとに 1 つのハッシュの配列を提供します。

connection.select_values は、各行の最初の値からの値を含む配列を提供します。select_value に似ていますが、複数の行があります。

于 2013-04-24T18:57:11.860 に答える