簡體   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