处理意外数据库 Nils 的最佳方法
Best Way to Handle Unexpected Database Nils
我正在与第三方合作 API,它似乎出乎意料 return 应该是数字属性的空字段。
我的应用程序在其整个视图中使用了大量 Model.whatever_attribute 检查,我突然开始收到诸如“nil:NilClass 的未定义方法 `>'”之类的错误以及 whatever_attribute 为零。
我有这样的视图代码,例如:
.stat{ :class => ((@obj.value > 1.2 and @obj.vaue > 0) ? 'green-font': 'red-font')}
如果 value = nil,返回上述异常。
现在,我不能真的假设值是 0 并且在数据库中有一个默认值,因为它可能是错误的值。我将不得不测试我是否从 API 返回 null 并且可能向最终用户呈现“N/A”或“-”。
当然,我可以通过各种方式做到这一点,我最初的想法是设置一个辅助方法,几乎可以做到 nil?在那里登记并相应地 return,但我想知道。
是否有某种 ruby 习语可以用来更优雅地处理这种情况?
我想一定是model-based方法
在 app/models
文件中 model_name.rb
方法如:
def get_font_class
self.value.nil? || self.value < 0 ? "green-font" : "red-font"
end
您可以添加任何您想要的支票
注意:||
检查第一个表达式 (self.value.nil?
),如果是 true
,则不检查第二个 (self.value < 0
)
并在视图中使用此方法:
class: @model_object.get_font_class
我正在与第三方合作 API,它似乎出乎意料 return 应该是数字属性的空字段。
我的应用程序在其整个视图中使用了大量 Model.whatever_attribute 检查,我突然开始收到诸如“nil:NilClass 的未定义方法 `>'”之类的错误以及 whatever_attribute 为零。
我有这样的视图代码,例如:
.stat{ :class => ((@obj.value > 1.2 and @obj.vaue > 0) ? 'green-font': 'red-font')}
如果 value = nil,返回上述异常。
现在,我不能真的假设值是 0 并且在数据库中有一个默认值,因为它可能是错误的值。我将不得不测试我是否从 API 返回 null 并且可能向最终用户呈现“N/A”或“-”。
当然,我可以通过各种方式做到这一点,我最初的想法是设置一个辅助方法,几乎可以做到 nil?在那里登记并相应地 return,但我想知道。
是否有某种 ruby 习语可以用来更优雅地处理这种情况?
我想一定是model-based方法
在 app/models
文件中 model_name.rb
方法如:
def get_font_class
self.value.nil? || self.value < 0 ? "green-font" : "red-font"
end
您可以添加任何您想要的支票
注意:||
检查第一个表达式 (self.value.nil?
),如果是 true
,则不检查第二个 (self.value < 0
)
并在视图中使用此方法:
class: @model_object.get_font_class