2011-08-04 76 views
0

我怎麼可以用這樣的查詢?我想這樣做的原因是因爲我有這個查詢來檢查以確保表單類型AND狀態是正確的,但我希望它不區分大小寫。以下是我有Rails 3中查詢幫助

@fields = Field.where(:form_type => 1, :state => "Alaska") 

而且我怎樣才能讓這個如果form_type = 1 OR form_type = *仍然會返回結果?

+0

是的阿拉斯加部分不要區分大小寫。有什麼建議麼? – Jake

回答

1

你將不得不使用這種格式:如果你希望它是不區分大小寫,allow form_type to be 1 or 3

@fields = Field.where(:form_type => 1).where("state LIKE 'Alaska'") 
+0

我可以這樣做嗎? @fields = Field.where( 「FORM_TYPE =?OR FORM_TYPE =?1,*)。其中(」 狀態LIKE '阿拉斯加'「) – Jake

+0

您使用星號表示 」任何形式的類型「,或者是*實際呢? –

+0

的實際值有效的價值 – Jake

0

,你可以做這樣的:

@fields = Field.where(:form_type => [1,3]).where("LOWER(state) = 'alaska'") 

或者,如果你想大喊一聲(誰不喜歡有時不時地大叫?):

@fields = Field.where(:form_type => [1,3]).where("UPPER(state) = 'ALASKA'") 

個人.where調用與AND相結合,獲得一致案例行爲的最可靠方法是自己做。

+0

謝謝。你知道我可以查詢如果form_type等於1或3嗎? – Jake

+0

@Jake:請參閱我的更新。 –

+0

非常感謝。效果很好 – Jake

1

如果您不喜歡在您的代碼中編寫原始SQL,但是您希望在查詢中使用LIKE子句,那麼squeel寶石非常好。 http://metautonomo.us/projects/squeel/

我已經使用了MySQL和PostreSQL的gem,它會生成正確的SQL(LIKE for MySQL和ILIKE for Postgres)。你用squeel的查詢看起來是這樣的:

@fields = Field.where{(form_type.in [1,2,3]) & (state =~ 'Alaska'")}