使用Record.friendly.find参数阻止ID



我使用的是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

请参阅:

  • 文档
  • 来源

最新更新