ruby on rails は初めてで、検索機能に問題があります。
oracle 拡張アダプター gem を使用して、レガシー Oracle データベースに接続する新しい Web アプリを作成しました。
Rails コンソールで次のコマンドを実行すると、データベースからデータが返されます
License.where(license_no: 'L1234')
また
License.find_by_license_no('L1234')
ただし、find() 関数を使用しようとすると、エラーが発生します。すなわち
License.find(:all)
また
License.all
Rails コンソールのエラー出力は次のとおりです。
irb(main):003:0> License.find(:all)
?[1m?[35mLicense Load (1062.5ms)?[0m SELECT "LICENSE".* FROM "LICENSE"
ActiveRecord::StatementInvalid: OCIError: ORA-01878: specified field not found i
n datetime or interval: SELECT "LICENSE".* FROM "LICENSE"
from stmt.c:289:in oci8lib_191.so
from c:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-o
racle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanc
ed_oci_connection.rb:155:in `fetch'
from c:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-o
racle_enhanced-adapter-1.4.1/lib/active_record/connection_adapters/oracle_enhanc
ed_adapter.rb:637:in `block in exec_query'
from c:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3
.2.2/lib/active_record/connection_adapters/abstract_adapter.rb:280:in `block in
log'
エラー出力内の SQL コマンドを見ると、select ステートメントに二重引用符が追加されていることに気付きました。SQL Developer で SQL コマンドを実行しようとすると、エラーが発生しました。二重引用符が追加されている理由はありますか? ruby on rails がテーブル名に二重引用符を追加するのを止める方法はありますか?
更新Oracle データベースは 10g で、Ruby 1.9.2p290 で rails 3.2 を使用しています。私も次のことを試しましたが、同じエラーが発生しました。
License.all