问题描述
我正在使用 FriendlyId 和 Rails。
我想支持通过 slug 查找:
https://example.com/restaurants/plaza-diner
但不支持通过其 ID 查找:
https://example.com/restaurants/23
我正在使用 Restaurant.friendly.find(params[:id])
,默认情况下它支持两者。如何使它不支持通过 ID 检索?
使用 find_by(slug: params[:id])
不是一种选择,因为它跳过了 FriendlyId 的内部结构并且不支持例如历史段塞。
我可以检查 params[:id]
是否为整数并引发 ActiveRecord:RecordNotFound
,但这似乎很复杂。有没有更简单的方法?
相关文件: https://github.com/norman/friendly_id/blob/819c0b111b0f722809c0a13ad025c5191a278f85/lib/friendly_id/finders.rb