Rails
ActiveRecord

ActiveRecord findメソッドにidを配列で渡した結果はRelationではない

More than 3 years have passed since last update.

Rails4でfindにidの配列を渡すと、

profiles = Profile.find [1,2,3,4,5]
  # =>  SELECT "profiles".* FROM "profiles"  WHERE "profiles"."id" IN (1, 2, 3, 4, 5)
profiles.class
  # => Array

となり、結果はただの配列でActiveRecordの恩恵を受けられません。
素直にwhereで取得したほうがいいです。SQLも同じなので特に問題なさそうです。

profiles = Profile.where id: [1,2,3,4,5]
  # =>  SELECT "profiles".* FROM "profiles"  WHERE "profiles"."id" IN (1, 2, 3, 4, 5)
profiles.class
  # => Profile::ActiveRecord_Relation

Environment

pry(main)> Rails.version
=> "4.1.6"