繁体   English   中英

从belongs_to表获取Ruby中的对象集合时出错

[英]Error getting a collection of objects in Ruby from a belongs_to table

在此示例中,我试图获取由特定类型的用户(锻炼属于特定用户,列名称为user_id)创建的锻炼的集合:current_user,Professional用户(继承自User)和一位管理员。 这是我现在所拥有的:

Workout.where('(user_id= ?) OR (user_id= ?) OR (user_id= ?)', current_user.id, User.select(&:professional?), User.find_by_admin(true).id)

我相信第二项抛出此错误:

Mysql2 :: Error:操作数应包含1列:SELECT workouts 。* FROM workouts ((user_id = 29)或(user_id = 2,5,29)或(user_id = 2))的ActiveRecord :: StatementInvalid:Mysql2 ::错误:操作数应包含1列:SELECT workouts 。* FROM workouts ((user_id = 29)OR(user_id = 2,5,29)OR(user_id = 2))

如果是这样,我如何遍历user_id = 2,5,29(.each除外)并提取由该特定用户组创建的所有锻炼?

试试这个where查询,它将查询user_id匹配的id数组

Workout.where(user_id: [current_user.id, User.select(&:professional?), User.find_by_admin(true).id].flatten)

SQL等效

SELECT * FROM workouts WHERE user_id IN (1,3,6,4,2)

尝试这个

Workout.where(user_id: [current_user, User.select(&:professional), User.find_by_admin(true)]).map(&:id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM