有沒有辦法在mongoid中爲不區分大小寫的搜索設置屬性?在mongoid中不區分大小寫的搜索
可以說有人有一個用戶名:IAmGreat,我想用他們唯一的用戶名查找用戶數據,而不用將其更改爲iamgreat。
感謝
有沒有辦法在mongoid中爲不區分大小寫的搜索設置屬性?在mongoid中不區分大小寫的搜索
可以說有人有一個用戶名:IAmGreat,我想用他們唯一的用戶名查找用戶數據,而不用將其更改爲iamgreat。
感謝
爲什麼不下來User.login.downcase
(或任何模型/屬性組合)在進行比較時?這將使數據庫中的大寫字母保持原樣,但是隻是爲了比較而忽略了該字段。
其實你可以搜索不區分大小寫。但你必須用正則表達式搜索! 下面是一個例子,我如何使用它在http://www.VersionEye.com
User.first(conditions: {email: /^#{email}$/i})
用「/」你在開始和結束的正則表達式。正則表達式之後的「i」表示不區分大小寫。 「^」表示元素必須以搜索字符串開頭,「$」表示元素必須以搜索字符串結尾。如果您正在尋找完全匹配,這一點很重要。如果您使用的是軌道或
User.where(username: /#{username}/i).first
你甚至可以嘗試像
@user = User.where({:username => /.*#{name}.*/i })
(1)不敏感的平等(2)(AFAIK)不會使用索引來檢查集合,因此它可能非常昂貴。 –
是的。這比默認查詢慢50%。但它確實檢查不區分大小寫的相等性。 – mrudult
不,它不檢查平等。你的正則表達式沒有錨。 –
mongoid你可以試試FF:
FYI:你可能需要的,如果它來淨化你的正則表達式包括用戶輸入:'/ ^#{Regexp.escape(email)} $/i' – Andrew
user = where(email:/^#{email}$/i).first – shilovk