Ruby on rails 查询不在联接表中的位置
我有一个Ruby on rails 查询不在联接表中的位置,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个图像模型和一个用户模型。 我通过名为likes的HABTM关系将它们连接在一起。 另外,图像属于用户 我试图找到所有不属于某个用户并且该用户不喜欢的图像。 我似乎不太明白哪里的条件 这就是我所拥有的: @image = Image.where("user_id != :user_id AND image_id NOT IN :likes", {:user_id => session[:user].id, :likes => session[:user].likes}).fir
图像
模型和一个用户
模型。
我通过名为likes
的HABTM关系将它们连接在一起。
另外,图像
属于用户
我试图找到所有不属于某个用户并且该用户不喜欢的图像。
我似乎不太明白哪里的条件
这就是我所拥有的:
@image = Image.where("user_id != :user_id AND image_id NOT IN :likes", {:user_id => session[:user].id, :likes => session[:user].likes}).first
以下是我的图像
和用户
型号:
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
如果查看我的images\u users
AKAlikes
表,您可以看到3,5
在我的错误中的来源:
首先,你应该在你的关联中使用一些有意义的名字。例如,您可以使用
has\u和\u-allown\u-to\u-many:欣赏者,:class\u-name=>“User”
或类似的东西,这更有意义。虽然您的查询不会受此影响。:)
无论如何,我可以为您当前的设置提供以下建议:
@image = Image.where("user_id != :user_id AND id NOT IN (:likes)", {:user_id => session[:user].id, :likes => session[:user].likes}).first
嗯,我仍然收到相同的错误-只是用它更新了问题。不客气。:)原因是我们没有指定likes(数组)周围的大括号。因此,SQL无法理解它应该研究什么。:)
@image = Image.where("user_id != :user_id AND id NOT IN (:likes)", {:user_id => session[:user].id, :likes => session[:user].likes}).first