因此,在我的 Rails 模型中,我正在执行以下操作来生成“SEO 友好”的 slug:
def to_param
"#{id}-#{title.parameterize}"
end
这样会生成如下内容:example.com/items/1-example-title
但是当我检查日志时,SQL 调用是:
SELECT * FROM `items` WHERE (`items`.`id` = '1-example-title') LIMIT 1
这对于 MySQL 来说似乎工作得很好,但 PostgreSQL 却表现不佳。
那么,如何让我的 SQL 查询仅使用 1
作为 id
而不是完整的 slug?
最佳答案
确保您使用的是标准查找调用。
Model.find(params[:id])
如果您使用替代语法,例如
Model.find_by_id(params[:id])
Model.first(:conditions => { :id => params[:id] })
那么你需要将参数转换为整数。
params[:id].to_i
关于sql - rails : Using to_param for SEO-friendly slugs screwing up database calls?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2463508/