检查下面的注释。为什么在我p variant_attributes
之前,blank?
方法返回错误,而在它之后,它运行正常?
Rails 3.0.3上的Ruby 1.9.2-p0
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
答案 0 :(得分:7)
如果variant_attributes
是一种ActiveRecord记录集合(它看起来像),那么可能是因为rails使用延迟加载来从数据库中获取记录,但blank?
方法不会触发实际装载。
您可能需要在all
上调用variant_attributes
方法来手动触发加载,或者如果您不想这样做,则可以转到variant_attributes.count.zero?
而不是variant_attributes.blank?
{1}}
有关详细信息,请参阅Pratik Naik's blog post about ActiveRecord 3.0查询界面