我有頁面顯示索引中的項目。如何選擇以Rails中的數字開頭的行?
我能夠獲得使用字母項目如下:
scope :by_letter, lambda { |letter| where("name LIKE '#{letter}%'") }
但我想不出該用數字(0-9)開頭的名稱一個完美的解決方案。
我怎麼能重寫這個或一個單獨的範圍,讓我搜索名稱以數字開頭?
編輯:我想要一次去所有以0-9開頭的行(對每個數字不分別)。
我有頁面顯示索引中的項目。如何選擇以Rails中的數字開頭的行?
我能夠獲得使用字母項目如下:
scope :by_letter, lambda { |letter| where("name LIKE '#{letter}%'") }
但我想不出該用數字(0-9)開頭的名稱一個完美的解決方案。
我怎麼能重寫這個或一個單獨的範圍,讓我搜索名稱以數字開頭?
編輯:我想要一次去所有以0-9開頭的行(對每個數字不分別)。
雅各,試試這個稍微改寫了你最後什麼樣的主意版本:
@letter_merchants = (0..9).map { |d| Merchant.by_letter(d) }
請注意,這隻能說明Ruby的真棒語言,而不是應該如何解決問題(會出現這種情況許多數據庫調用)。
哇,這真是太棒了!謝謝! – Jacob
REGEXP的一個缺點是它不能使用索引。但是
scope :starts_with_number, where("name >= '0' and name < ':')
可以使用名稱上的索引。它確實依賴於字符0-9:正好是這樣的順序,其間沒有任何內容,在任何類似ascii,utf8的情況下都是如此,但如果您使用ebcdic或其他任何類似的東西,則不會出現這種情況
您試過了嗎? .by_letter( 「1」)'。它應該工作。只需將名稱更改爲by_character,即可獲得! :) –
更新了問號:) - 我的意思是一次性讀取以數字開頭的行。 – Jacob