使用 Record.friendly.find 参数防止 ID
Prevent IDs with Record.friendly.find param
我正在使用 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 的内部结构并且不支持历史 slug。
我可以检查 params[:id]
是否为整数并提出 ActiveRecord:RecordNotFound
,但这看起来很复杂。有没有更简单的方法?
我正在使用 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 的内部结构并且不支持历史 slug。
我可以检查 params[:id]
是否为整数并提出 ActiveRecord:RecordNotFound
,但这看起来很复杂。有没有更简单的方法?