在子关联上调用方法时避免错误

时间:2013-08-27 09:23:03

标签: ruby-on-rails ruby

我正在构建一个Rails应用程序,其中用户有很多事件。

如果用户有一个事件并且我current_user.events.each那么一切都很好,但如果用户没有任何事件,则会抛出未定义的方法错误并且整个应用程序停止工作。

作为PHP用户,我首先要检查变量是否在循环之前设置了。 Rails是否有一种很好的方法可以在模型中启动方法,无论我还是应该检查?

3 个答案:

答案 0 :(得分:2)

current_user.events.try(:each)

如果each不为零,则会返回events的常规输出,否则将返回nil,而不会出错。

答案 1 :(得分:0)

你可以做到

if current_user.events  # This ensures that that the user at least has 1 event
  current_user.events.each 
  # rest of the code
end

答案 2 :(得分:0)

对于较新版本的rails,不应该使用空白数组(如果你有一个数组)。

总是.empty?

if !current_user.events.empty?
  ..
end