2013-02-05 86 views
0

我有一個Image模型和User模型。 我將它們與HABTM關係likes結合在一起。 也Image屬於User查詢不在連接表

我想要找到所有圖像,不屬於一個用戶,並沒有被該用戶喜歡。 我似乎無法想出哪裏的條件。

這是我有:

@image = Image.where("user_id != :user_id AND image_id NOT IN :likes", {:user_id => session[:user].id, :likes => session[:user].likes}).first 

這裏是我的ImageUser型號:

class Image < ActiveRecord::Base 
# attr_accessible :title, :body 
belongs_to :user 
has_and_belongs_to_many :likes, :class_name => 'User' 
end 

class User < ActiveRecord::Base 
# attr_accessible :title, :body 
has_many :submitted_images, :class_name => 'Image' 
has_and_belongs_to_many :likes, :class_name => 'Image' 
end 

有人可以幫我想出這個查詢?謝謝!

編輯

語法錯誤我得到:

PG::Error: ERROR: syntax error at or near "3" 
LINE 1: ... FROM "images" WHERE (user_id != 1 AND image_id NOT IN 3,5) LIMIT... 
                 ^
: SELECT "images".* FROM "images" WHERE (user_id != 1 AND image_id NOT IN 3,5) LIMIT 1 

如果你看一下我的images_users AKA likes表中可以看到那裏的3,5是從我的錯誤來:

My Table

回答

1

首先,你應該使用一些有意義的名字來描述你的關聯。例如,您可以使用has_and_belongs_to_many :appreciators, :class_name => 'User'或類似的東西,這樣更有意義。儘管你的查詢不會受到這個影響。 :)

不管怎麼說,我可以建議你目前的設置是:

@image = Image.where("user_id != :user_id AND id NOT IN (:likes)", {:user_id => session[:user].id, :likes => session[:user].likes}).first 
+0

嗯,我仍然得到同樣的錯誤 - 剛剛更新與它的問題。 – Deekor

+0

@Deekor嘗試更新的答案。 –

+0

它有效。謝謝! – Deekor