Rails:无需检查方法链最佳实践

时间:2016-04-09 16:44:25

标签: ruby-on-rails ruby null try-catch method-chaining

给出以下方法。如果comment.story.teams.first的结果可能是nil,那么如何最好地使此代码安全?

我已经尝试了comment.story.teams.first.try(:users),但随后又开始行动,而作业users -= [@current_user]会引发undefined method错误。

  def recipients
    if comment.commentable_type == "Story"
      users = comment.story.teams.first.users
    else
      users = comment.other_commenters + [comment.commentable_user]
    end
    users -= [@current_user]
    users.uniq
  end

我可以在这里使用更好的模式吗?

1 个答案:

答案 0 :(得分:0)

除非声明,否则请将您需要的任何内容包装在ruby中。

unless comment.story.teams.first.nil?
   ##Execute code in here
end

希望有所帮助。可能更容易重构方法中的一些语句。 '除非'如果不是'只是ruby语法。