我需要一種方法來通過數據庫並返回適當的結果。在這種情況下,它按作者,標題,出版日期或ISBN代碼搜索書籍。我決定使用where()方法,但我遇到了兩個問題:'where'方法中的正則表達式
1)我無法搜索多個字段。它很容易尋找一個標題:
def self.browse(query)
if query.nil?
nil
else
self.where("title REGEXP :query", query: query)
end
end
,但我不知道如何設置它尋找標題或作者或ISBN等試圖
self.where("(title OR author OR publishing_date OR isbn) REGEXP :query", query: query)
但它不工作
和第二,我希望我的查詢只匹配單詞的開頭或結尾。在MySQL Workbench中它非常容易,但我很難在Rails中做到這一點。這是我到目前爲止已經試過(和失敗):
self.where("title REGEXP :query", query: /^(query)*$/)
self.where("title REGEXP /^:query/", query: query)
self.where("title REGEXP :query", query: $"query"^)
不用說,在互聯網上我發現了許多不同的文檔或教程,有一句話說「^」應該是在年底,另一方面,它應該在開始時...
我會後通過加入'.to_sql'繼續調試你在哪兒打電話。這將吐出ActiveRecord生成的SQL查詢,以便您可以將其與您想要的進行比較。 – theodorton