如何在获取之前检查friendly_id条目是否存在?
例如:
def book
@book = Book.find(params[:book_id])
end
没关系,但我想先检查一下是否有friendly_id,比如:
def book
if Book.exists?(params[:book_id])
@book = Book.find(params[:book_id])
else
#404 not found
end
如何在获取之前检查friendly_id条目是否存在?
例如:
def book
@book = Book.find(params[:book_id])
end
没关系,但我想先检查一下是否有friendly_id,比如:
def book
if Book.exists?(params[:book_id])
@book = Book.find(params[:book_id])
else
#404 not found
end
作为friendly_id
gem 的最新版本,您可以说:
Book.friendly.exists? params[:book_id]
从 RecordNotFound 异常中救援 ==>
def book
@book = Book.find(params[:book_id])
#OK
rescue ActiveRecord::RecordNotFound => e
head :not_found
end
我建议您像我一样将 Deepak N 的解决方案移至模型:
def self.find_by_friendly_id(friendly_id)
find(friendly_id)
rescue ActiveRecord::RecordNotFound => e
nil
end
所以现在它会通过 id 和 slug 来获取你的书,并且不会抛出异常,就像标准的 AR 方法 #find_by_id 一样。
顺便说一句,根据文档#exists?现在的方法是检查记录存在的正确方法!
@book = Book.find_by_id(params[:book_id])
if @book
# OK
else
#404 not found
enв