我正在使用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