有没有更好的方法来编写find_messages_by_slug_or_404方法?

时间:2010-03-20 21:04:56

标签: ruby-on-rails ruby refactoring

在我的messages_controller中,我有以下私有方法:

def find_message_or_404(slug)
  message = user.messages.find_by_slug(slug)
  if message.nil?
    raise Error404
  end
  message
end

我发现它不优雅而且不是很鲁莽。有没有办法改善它?

2 个答案:

答案 0 :(得分:3)

如果您只想缩短代码以使其更像Ruby,那么:

def find_message_or_404(slug)
  user.messages.find_by_slug(slug) || raise Error404
end

非零find_by_slug将返回消息,否则它将分支到raise语句。

答案 1 :(得分:2)

我个人认为你所拥有的东西没有任何问题(明智的编码风格),但也许你更喜欢这样:

def find_message_or_404(slug)
  user.messages.find_by_slug(slug) or raise Error404
end