我使用的是FriendlyId和Rails。
我想支持鼻涕虫的发现: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
使用Restaurant.friendly.find_by_friendly_id(params[:id])
。
完全通过友好id查找,完全绕过原始
find
。
请参阅:
- 文档
- 来源