[英]Ruby/Rails ActiveRecord attribute find boolean
我正在寻找一种很好的方法来查找ActiveRecord属性是否为布尔值,我在这里有这个方法来检查存在的摘要属性还是有数据,它是通过value.nil? || value.zero?
value.nil? || value.zero?
但现在我们有一个例外,其中值可以是布尔值。 所以它爆发了NoMethodError: undefined method zero?' for false:FalseClass
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中的布尔值。
!!value == value #true if boolean
但我不认为有任何内置的方法。
例如,如果您有一个具有布尔属性admin
的User
类,则可以执行以下操作:
User.columns_hash['admin'].type
# => :boolean
在这里阅读有关columns_hash
更多信息: http : //api.rubyonrails.org/classes/ActiveRecord/ModelSchema/ClassMethods.html#method-i-columns_hash
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.