Неопределенный метод 'ноль' для ... ActiveSupport :: OrderedHash - PullRequest
2 голосов
/ 31 января 2011

Проверьте примечание ниже.Почему до того, как я сделал p variant_attributes, blank?, метод вернул ошибку, а после этого он работает нормально?

Ruby 1.9.2-p0 на 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

1 Ответ

7 голосов
/ 31 января 2011

Если variant_attributes является своего рода коллекцией записей ActiveRecord (как это выглядит), то это, вероятно, потому, что rails использует отложенную загрузку для извлечения записей из базы данных, но метод blank? не вызывает фактическую загрузку.

Возможно, вы захотите вызвать метод all для variant_attributes, чтобы вручную запустить загрузку, или, если вы не хотите этого делать, вы можете перейти к variant_attributes.count.zero? вместо variant_attributes.blank?* 1009.*

См. сообщение в блоге Пратика Наика об ActiveRecord 3.0 интерфейс запроса для деталей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...