Order クラスと Pack クラスがあり、どちらも ActiveRecord を使用しています。注文にはパックが含まれています。注文の検証では、1 つ以上のパックとの関係の存在をテストしています。次のコードを参照してください。
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
ゼロなのか誰か教えてください。