2013-05-22 50 views
0

我的Rails應用程序有3個組成部分: -users(有許多作品和評論) -Works(博客文章)(屬於用戶,有很多評論) -comments(評論屬於用戶和工作)Rails的查詢不等於

我試圖在特定用戶的頁面上顯示所有評論,除​​了對屬於他/她的博客帖子發表的評論。我的查詢應該在控制器中看起來像什麼?

這是我到目前爲止。它根本不加載任何評論。

@user = User.find(params[:id]) 
    @works = Work.pluck(:user_id) 
    @comments = @user.comments.where(is_boolean_value: true).where(['user_id NOT IN(?)', @works]).all 

我怎樣才能改變這種查詢,以便顯示由該用戶沒有自己的工作,用戶作出的評論?

謝謝! -b

回答

3

的第一個問題是

Work.pluck(:user_id) 

即取入USER_ID對於具有表工作的目的的任何用戶。相反,獲取的各項的用戶創建的工作IDS:

@works = @user.works.map {|obj| obj.id} 

然後查詢數據庫給你屬於該用戶,但不屬於他的作品之一的所有意見:

@comments = @user.comments.where('work_id NOT IN(?)', @works) 
+0

工作!你能解釋@works查詢嗎? .map和obj是做什麼的?十分感謝你的幫助! – winston

+0

提取屬於用戶的所有作品。 .map將一個數組轉換爲另一個數組。因此,對於作品中的每個元素,它將其稱爲obj,然後返回obj.id.基本上@works現在充滿了屬於該特定用戶的工作ID。 –

+0

再次感謝!我真的很感激解釋:) – winston