find_by只返回第一个值

A J*_*A J -1 ruby ruby-on-rails-5

我正在尝试检索特定部门内的所有员工姓名.

这是我做的:

Employee.find_by(department:'IT').name
Run Code Online (Sandbox Code Playgroud)

但它只返回第一个值.

这是我在控制台中得到的:

SELECT  "employee".* FROM "employee" WHERE "employee"."department" = $1 LIMIT $2  [["department","IT"], ["LIMIT", 1]]
Run Code Online (Sandbox Code Playgroud)

为何选择LIMIT 1?

mat*_*ewd 6

这是做什么的find_by(..); 这是一条捷径where(..).first.

如果您想要所有记录,则需要使用where.

Employee.where(department:'IT').map(&:name)
Run Code Online (Sandbox Code Playgroud)

  • 如果`name`是Employee的属性,请使用pluck over map. (2认同)