我有一個需要放入SQLite3查詢的函數。如何將Ruby函數放入SQLite3查詢中?
我有以下方法:
def levenshtein(a, b)
case
when a.empty? then b.length
when b.empty? then a.length
else [(a[0] == b[0] ? 0 : 1) + levenshtein(a[1..-1], b[1..-1]),
1 + levenshtein(a[1..-1], b),
1 + levenshtein(a, b[1..-1])].min
end
end
,我想要做一個查詢,看起來像這樣:
@results = The_db.where('levenshtein("name", ?) < 3', '#{userinput}')
我想找到The_db
其中名稱的值是什麼編輯名稱列的值與用戶輸入之間的距離小於3
。問題是我不知道如何在查詢中使用Ruby函數。這甚至有可能嗎?
我試過了,但頁面從未加載......它只是卡住了...... – areke
其實,這是因爲levenshtein函數耗時太長......這意味着你回答了我的問題。謝謝!如果您知道另一種方法來測試兩個字符串之間的相似性,請告訴我:D – areke
使用與生產中不同的DBM進行開發是正常的,但不是真正的建議,因爲SQL實現中可能存在差異,會泄漏回代碼中;我們編寫代碼來容納數據庫,然後在針對不同的DBM推送生產後導致出現問題。考慮到PostgreSQL是免費的,幾乎適用於開發人員可以使用的任何機器,所以在開發過程中很難證明不使用它。是的,設置它有一點點花費,但一旦完成,它就非常透明。 –