Ruby on rails 未定义的方法';零';对于ActiveSupport::OrderedHash

Ruby on rails 未定义的方法';零';对于ActiveSupport::OrderedHash,ruby-on-rails,ruby,Ruby On Rails,Ruby,检查下面的注释。为什么在我执行p variant\u attributes,blank之前执行此操作?方法返回错误,而在执行此操作之后,它工作正常 Ruby 1.9.2-p0 on Rails 3.0.3 p variant_attributes.blank? # => NoMethodError Exception: undefined method `zero?' for {"Brocade w/ Grande Stripe backing"=>3}:ActiveSupport:

检查下面的注释。为什么在我执行
p variant\u attributes
blank之前执行此操作?
方法返回错误,而在执行此操作之后,它工作正常

Ruby 1.9.2-p0 on Rails 3.0.3

p variant_attributes.blank?
# => NoMethodError Exception: undefined method `zero?' for {"Brocade w/ Grande Stripe backing"=>3}:ActiveSupport::OrderedHash
p variant_attributes
# => [#<VariantAttribute id: 1251, variant_id: 561, product_option_id: 838, value: "Brocade w/ Grande Stripe backing">]
p variant_attributes.blank?
# => false
p variant\u attributes.blank?
#=>NoMethodError异常:{“Brocade w/Grande Stripe backing”=>3}的未定义方法“zero”:ActiveSupport::OrderedHash
p变量属性
# => [#]
p variant_attributes.blank?
#=>错误

如果
variant\u attributes
是一种记录的ActiveRecord集合(看起来像),那么这可能是因为rails使用延迟加载从数据库获取记录,但是
blank?
方法不会触发实际加载

您可能需要调用
variant\u attributes
上的
all
方法来手动触发加载,或者如果您不想这样做,您可以选择
variant\u attributes.count.zero?
而不是
variant\u attributes.blank?

详见查询界面