sql - rails : Using to_param for SEO-friendly slugs screwing up database calls?

标签 sql ruby-on-rails

因此,在我的 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/

相关文章:

php - 从多个值运行插入脚本

php - SQL/PHP - 关键更新

php - 为什么where子句不影响查询?

ruby-on-rails - Paperclip:从文件系统存储迁移到 Amazon S3

ruby-on-rails - Rails 不转换时区 (PostgreSQL)

mysql - 当我们插入行时真的返回 id 列吗?

sql - 获取所有记录,包括不匹配的记录

ruby-on-rails - 生产中的 Rails Resque worker - 将 Redis 服务器放在哪里?

javascript - 当我尝试通过 rails 插入 URL 时,window.replace 方法在 js 中不起作用

ruby-on-rails - 随机搜索结果