【发布时间】:2014-09-08 09:57:24
【问题描述】:
我正在寻找一种很好的方法来查找 ActiveRecord 属性是否为布尔值,我在这里有这个方法可以检查摘要属性是否存在或有数据,它通过 value.nil? || value.zero? 执行此操作,但现在我们有一个值可能是布尔值的异常。所以它被NoMethodError: undefined method zero?' for false:FalseClass炸毁了
def self.summary_attribute_status(element)
# Check if all summary attributes zero or nil
result = element.class.attributes_for_tag(:summary_attributes).all? do |attribute|
value = element.send(attri bute)
next element
value.nil? || value.zero?
end
return result ? nil : 'something'
end
我可以这样做:
value.nil? || value.zero? || (!value.is_a? TrueClass || !value.is_a? FalseClass)
但似乎应该有更好的方法来找到它的一般类型,我试着找出它们是否共享一个布尔类型的父类或超类,但它们都继承自 Object < BasicObject。没有别的办法吗?
【问题讨论】:
标签: ruby-on-rails ruby types