Rails: Использование to_param для SEO-дружественных слагов, запутывающих вызовы базы данных? - PullRequest
3 голосов
/ 17 марта 2010

Итак, в моих моделях Rails я делаю следующее, чтобы создать «SEO-дружественный» слаг:

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 вместо полного слага?

1 Ответ

5 голосов
/ 20 марта 2010

Убедитесь, что вы используете стандартный вызов поиска.

Model.find(params[:id])

Если вы используете альтернативные синтаксисы, такие как

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

тогда вам нужно привести параметр к целому числу.

params[:id].to_i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...