1

レールのバージョン: 3.1.10

やあ。userモデルとのhas_many関係を持つモデルがありaccountます。1 人の特定のユーザーに対して、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

user.accounts.allへの呼び出しでデータベース クエリが生成されないため、ActiveRecord のキャッシュが行われていると考えられます。しかし、本当に困惑するのは、user.accounts.classuser.accounts.all.classがどちらも に等しいにもかかわらず、このメソッドArrayを呼び出すと:count2 つのまったく異なることが行われることです。

私は ruby​​ にはかなり慣れていませんが、オブジェクトのメソッドをオンザフライで定義することで魔法のようなことができることは知っています。それがここで起こっていることですか?ActiveRecordArrayは最初のケースで私に変更を与えていますか?

4

0 に答える 0