如何在获取之前检查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
答案 0 :(得分:16)
从friendly_id
gem的最新版本开始,您可以说:
Book.friendly.exists? params[:book_id]
答案 1 :(得分:5)
从RecordNotFound例外救援==>
def book
@book = Book.find(params[:book_id])
#OK
rescue ActiveRecord::RecordNotFound => e
head :not_found
end
答案 2 :(得分:1)
我建议你像我一样将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一样。
BTW,根据documentation #exists?
方法现在是检查记录存在的正确方法!
答案 3 :(得分:-1)
@book = Book.find_by_id(params[:book_id])
if @book
# OK
else
#404 not found
enв