如何禁用“ nil:NilClass的未定义方法”错误?

时间:2019-10-28 15:07:08

标签: ruby-on-rails

我的控制器和视图中有一堆类似current_user.articlescurrent_user.name的代码。显然,当没有当前用户时,这将导致错误。我可以一直写current_user && current_user.articles之类的东西,但这是重复的。

如果在current_user上调用了一个方法,但current_user不存在,是否有某种方法可以禁用此错误消息并仅返回警告?

2 个答案:

答案 0 :(得分:1)

与其禁用错误(这似乎不是一个特别棒的想法),不如考虑使用红宝石安全导航操作符&..try

请注意,有些人(例如here's)将其视为代码气味。但是,IMO,比禁用NoMethodError的气味要小。

答案 1 :(得分:0)

您可以在访问任何对象方法或属性之前使用&以避免错误。这样,如果对象为nil,则将避免&之后的所有链,结果将为nil。

current_user&.name # User name if current_user exists, nil otherwise