2013-08-29 60 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中的保留關鍵字。