2013-08-29 145 views
0

我想运行一个简单的像用下面的代码条款等Like语句中的Rails 3

Message.where('to LIKE ?', '%hi') 

我的模型类是如下...

类信息< ActiveRecord的::基地

attr_accessor:从,:error_messages,:use_background_job,:到
attr_accessible:状态,:于:来自:CC,:BCC,:主体,:身体, :error_messages,:use_background_job

我正在使用activerecord和activerecord-oracle_enhanced-adapter gem。然而,我得到以下错误...

←[1m←[36mMessage Load (161.1ms)←[0m ←[1mSELECT "MESSAGES".* FROM "MESSAGES" WHERE (to LIKE 'hi')←[0m 
ActiveRecord::StatementInvalid: OCIError: ORA-00936: missing expression: SELECT "MESSAGES".* FROM "MESSAGES" WHERE (to LIKE 'hi') 
     from stmt.c:230:in oci8lib_191.so 
     from c:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/ruby-oci8-2.1.5-x86-mingw32/lib/oci8/cursor.rb:126:in `exec' 

这是一个Oracle问题或是我的语法的类似的子句不正确?

回答

1

看起来像“to”是一个Oracle关键字。

试试这个

Message.where('"to" LIKE ?', '%hi') 

Oracle使用双引号来逃避关键字

+0

由于db列的名称,这只是需要大写“TO”。 – HelloWorld

1

尝试使用Message.where('messages.to LIKE ?', '%hi')。我认为'是'是sql中的保留关键字。