私はレールを初めて使用していて、それがどのように動作するかをまだ学習しています。私は、オブジェクトが入力されているすべての年のリストを得ることができるように、レガシーのOracleデータベースの日付列から年のリストを取得しようとしています。 Oracleデータベースは10gで、私はruby 1.9.2p290でレール3.2を使用し、Oracle拡張アダプタ・ガムを使用しています。従来のOracleデータベースとActiveRecordから日付列をクエリする際に問題が発生しました。
- License.select("distinct(to_char(application_date,'yyyy'))").each do |lic|
%p= lic.attributes
結果を、私は戻って取得数です:
現在、私は次のコードは、私のクエリを行って使用しています(.attributeは私がクエリから返されているものをどのような決定を支援することです)私がアクセスする方法がわからないデータベース列に見つかったすべての別々の年を含むハッシュの
{"(to_char(application_date,'yyyy'))"=>"2002"}
また、データベーステーブルの日付列からすべての行を選択して出力してみました。しかし、私は解決方法を理解していないというオラクルのエラーが出ます。
OCIError: ORA-01878: specified field not found in datetime or interval: SELECT DISTINCT application_date FROM "LICENSE"
のOracle拡張アダプターは、Oracle初期化子で列名で日付をエミュレートするように設定されています:
self.emulate_dates_by_column_name = true
私も設定した
- License.select("application_date").uniq.each do |lic|
%p= lic.year
することは私に次のエラーを与えます列は、ライセンスモデルの日付列:
set_date_columns :application_date
データベースの日付列のすべての行から別々の年を取得する方法はありますか?私はその1つの列からのユニークな年のデータセットの望ましい結果を得る方法についてはあまりよく分かりません。