Rails:使用to_param为SEO友好的slu搞搞乱数据库调用?

时间:2010-03-17 15:24:08

标签: 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来代替完整的slug?{/ p>

1 个答案:

答案 0 :(得分:5)

确保使用标准查找呼叫。

Model.find(params[:id])

如果您使用其他语法,例如

Model.find_by_id(params[:id])
Model.first(:conditions => { :id => params[:id] })

然后你需要将参数转换为整数。

params[:id].to_i