在rails中使find_by返回多个结果

时间:2012-08-21 15:02:20

标签: ruby-on-rails ruby postgresql

我正在尝试返回用户创建的所有组。所有组都与用户ID相关联。当我运行find_by查询时,它只返回第一个结果。有没有办法让它返回多个? 提前致谢

4 个答案:

答案 0 :(得分:22)

我正在写一个单独的答案,因为我无法评论James Lowrey的答案,因为我没有得到50分。

不推荐使用find_all_by(Ruby 4.2)。

要从模型中获取活动记录列表,请执行以下操作:

Model.where(attribute_name: val)

例如,要查找Vehicle表中的所有记录(具有列名“model_name”),使得model_name的值为“Audi”,请执行

@vehicles = Vehicle.where(model_name: "Audi")

您可以像这样迭代这些:

<%  @vehicles.each do |vehicle| %>

答案 1 :(得分:12)

将find_by更改为find_all_by,它将返回所有匹配的结果。

答案 2 :(得分:3)

我认为现在可能会弃用find_all_by(至少,我无法让它工作)。我相信现在推荐'where'功能

where("name LIKE ?","%#{search}%")
where(instructor_id: params[:choosen_instructor_id])   
where ("id = ?",id_val)

万一你不知道,?和参数列表是为了防止SQL注入

答案 3 :(得分:0)

用户类将id作为主键。
在group类中存储为user_id 然后找到与该用户相关联的所有组,可以找到 @基团= Group.find_all_by_user_id(USER_ID)