[英]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
。* FROMworkouts
((user_id = 29)或(user_id = 2,5,29)或(user_id = 2))的ActiveRecord :: StatementInvalid:Mysql2 ::錯誤:操作數應包含1列:SELECTworkouts
。* FROMworkouts
((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.