如何获取where子句返回nil?

时间:2013-11-13 12:14:37

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

在我的Rails 3应用程序中,我使用before_filter来确保该操作只能由permanent用户使用,即来宾的用户:< / p>

def permanent_user
  @user = User.where('guest != ?', true).find(params[:id])
  redirect_to(root_path) unless current_user?(@user)
end

问题是当数据库中的总用户数非常低时,我经常在第一行收到ActiveRecord::RecordNotFound错误。

如何改进我的功能以创建@user对象或nil

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

这个怎么样?

def permanent_user
  redirect_to root_path if current_user.guest?
  @user = current_user
end