2012-04-17 140 views
0

我在我的rails網站中實現用戶設置,用戶可以控制哪些人可以向他發送通知。可以向其發送信息的用戶所允許的類別存儲在數組中,並且可以由用戶設置。Mongoid查詢包含數組

如何根據發送帖子的用戶的用戶類型查詢用戶發送通知。

我想做這樣的事情。

notifiable_users = User.all.or("notification_setting.posted_by" includes "sender.user_type") 
+0

'all.or'應該是什麼意思? – apneadiving 2012-04-17 18:42:36

+0

我只是將過濾器添加到使用mongoid或鏈接的所有用戶。 – nightf0x 2012-04-17 18:46:26

+0

但是這樣做,我想你先加載所有用戶,然後過濾內存中的對象,爲什麼不直接做一個更精確的查詢來降低數據庫調用? – apneadiving 2012-04-17 18:50:10

回答

2

假設notification_setting.posted_by爲允許的用戶類型的陣列和sender.user_type被髮送方的USER_TYPE(單數,而不是一個陣列),就可以簡單地做:

notifiable_users = User.all.or("notification_setting.posted_by" => sender.user_type) 

如果是其他的方式around:

notifiable_users = User.all.or("notification_setting.posted_by".to_sym.in => sender.user_types) 
+0

感謝您寫的第一個查詢爲我做了訣竅! – nightf0x 2012-04-17 18:45:34

+0

+1以上評論 – apneadiving 2012-04-17 19:27:26