Rails版本:3.1.10
您好。我有一个与user
模型有has_many
关系的account
模型。对于一个特定用户,有5个帐户。但是,当我要求相关模型时,我只得到3回:
> user.accounts.class
=> Array
> user.accounts.count
(0.2ms) SELECT COUNT(*) FROM "accounts" WHERE "accounts"."user_id" = 1
=> 5
> user.accounts.all.class
=> Array
> user.accounts.all.count
=> 3
我认为有一些ActiveRecord缓存正在进行,因为对user.accounts.all
的调用不会生成数据库查询。但真正让我感到困惑的是即使user.accounts.class
和user.accounts.all.class
都等于Array
,调用:count
方法会做两件完全不同的事情。
我对ruby很新,但我知道你可以在动态定义对象的方法上做一些魔术。那是在发生什么事吗? ActiveRecord是否在第一种情况下给我修改了Array
?