我正在使用find_by_sql
來執行SQL查詢。 我希望能夠使用Soundex和Levenshtein,但爲了使用Levenshtein,我需要將函數作爲一個文件加入。如何包含自定義SQL函數
這是我到目前爲止的代碼:
info = params[:email].split('@')
name = info[0]
domain = info[1]
levenshtein = File.open("./lib/assets/mysql-function-levenshtein.sql")
results = Domain.find_by_sql(
"" + levenshtein + "
SELECT *
FROM domains
WHERE domain = '" + domain + "'"
)
我不知道,如果簡單地把它放置在查詢甚至有效。
什麼是最好的實現?
通過我想包括文件的方式是這樣的: https://github.com/vyper/levenshtein-sql
您是否嘗試運行?我可能會使用'File.read'而不是'File.open',或者將'find_by_sql'調用包裝在'File.open do ... end'塊中。否則我不太喜歡使用自定義SQL查詢。難道你不能只是在數據庫中定義函數,並做一個'where(「levensthtein('leonardo','leonardu')」)'?每次運行查詢時都沒有必要定義函數,對嗎? – Frost 2012-07-16 08:42:04
是的,'File.read'是一個使用的。 – 2012-07-16 08:55:46
我將如何去定義數據庫上的函數? – 2012-07-16 08:56:14