如何在我的before_action中添加异常处理

甘蔗

我有这样的before_action方法:

def current_user
  @current_user ||= User.find(:id => session[:id])
end

我调用这样的方法:

def get_food user
  food = Food.find(:id => user.id)
end

很好,但是我想添加异常处理。

当用户为零时,我想使用@current_user

def get_food user
  food = Food.find(if user is nil i want to use @current_user.id)
end

当然,我可以这样写:

def get_food user
  if user.nil?
    food = Food.find(@current_user.id)
  else
    food = Food.find(user.id)    
end

或者,这是最好的方法吗?

def get_food user
  food = Food.find(user == nil? @current_user.id : user.id)
end

我很好奇,有没有比if在参数中添加简单语句更好的方法了?

斯派克曼

我能想到的最短的一行是这样的:

Food.find((user || current_user).id)
Food.find(user.try(:id) || current_user.id)
Food.find(user ? user.id : current_user.id)

不知道这是否真的提高了可读性。我更喜欢这样的东西:

def get_food(user)
  user ||= current_user
  Food.find(user.id)
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章