首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails添加双引号以“查找”函数

Rails添加双引号以“查找”函数
EN

Stack Overflow用户
提问于 2012-04-19 13:25:13
回答 2查看 601关注 0票数 2

我对ruby on rails很陌生,而且我对find函数有问题。

我创建了一个新的web应用程序,它使用Oracle增强适配器gem连接到遗留的oracle数据库。

当我在rails控制台中运行以下命令时,我从数据库中获得数据

代码语言:javascript
复制
License.where(license_no: 'L1234') 

代码语言:javascript
复制
License.find_by_license_no('L1234') 

但是,当我尝试使用find()函数时,会出现一个错误。即

代码语言:javascript
复制
License.find(:all)

License.all

rails控制台中的错误输出如下:

代码语言:javascript
复制
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命令时,出现了一个错误。有什么理由增加双引号吗?有没有办法阻止将双引号添加到表名中?

UPDATE oracle数据库是10g,我使用rails 3.2和ruby1.9.2p290。我也尝试了下面的方法,并得到了同样的错误。License.all

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-19 13:42:25

在Rails 3中使用find函数(取决于所使用的Rails版本)的正确格式如下:

代码语言:javascript
复制
License.where('license_no = ?', 'L1234')

代码语言:javascript
复制
License.all

找到他们所有人。

如果您在Rails 2中,格式如下:

代码语言:javascript
复制
License.find(:all, :conditions =>  ["license_no = ?", "L1234"])

在这里查看基于动态属性的部分:

http://api.rubyonrails.org/classes/ActiveRecord/Base.html

票数 2
EN

Stack Overflow用户

发布于 2012-04-19 13:32:29

Model.find不接受哈希作为第一个参数。所以它以错误的方式对待您的散列(license_no: 'L1234')。

http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10229093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档