データベースをEnumeration.all
即座にクエリしてArray
、すべての列挙型レコードを返します (単一のレコードのみが必要な場合、これは非常に非効率的です)。ActiveRecord メソッドについては認識しなくなりました。
> Enumeration.all.class
Enumeration Load (0.1ms) SELECT "enumerations".* FROM "enumerations"
=> Array
別の構文を必要とfind
するArray
用途の呼び出し。たとえば、次のようになります。Enumerable#find
enums = Enumeration.all
enum = enums.find { |e| e.id == 2 }
=> #<Enumeration id: 2, name: "...">
のみを使用Enumeration.where(false)
すると lazy が返され、ActiveRecord::Relation
実際にはデータベースにヒットしません (まだ)。これにより、find
上記の例のように、追加の ActiveRecord メソッドをチェーンできます。
> Enumeration.where(false).class
=> ActiveRecord::Relation
> Enumeration.where(false).find(2)
Enumeration Load (0.2ms) SELECT "enumerations".* FROM "enumerations" WHERE "enumerations"."id" = ? LIMIT 1 [["id", 2]]
=> #<Enumeration id: 2, name: "...">