我有一个 Order 类和一个 Pack 类,它们都使用 ActiveRecord。订单包含包装。在我对订单的验证中,我正在测试是否存在与一个或多个包的关系。请参阅以下代码:
class Order < ActiveRecord::Base
belongs_to :user
has_many :order_packs
has_many :packs, :through => :order_packs
validate :my_custom_validation
def my_custom_validation
errors.add(:packs, "Your order was empty.") if packs.count < 1
end
end
看起来很简单,但它不起作用;packs.count
始终为零。所以我将验证更改为以下代码:
def my_custom_validation
errors.add(:packs, "packs is: #{packs}")
errors.add(:packs, "packs.count is: #{packs.count}")
errors.add(:packs, "packs.any? is: #{packs.any?}")
end
只是想看看交易是什么,并得到了这个有趣的输出:
谁能告诉我为什么count
是零?