Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 查询不在联接表中的位置_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

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
AKA
likes
表,您可以看到
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