Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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
含糊不清';id';列错误-Rails/Postgresql_Sql_Ruby On Rails_Ruby_Postgresql - Fatal编程技术网

含糊不清';id';列错误-Rails/Postgresql

含糊不清';id';列错误-Rails/Postgresql,sql,ruby-on-rails,ruby,postgresql,Sql,Ruby On Rails,Ruby,Postgresql,不是一个傻瓜。我在问题的底部添加了原因。 我有两种型号,Playlist和User,它们都有许多,并且通过第三个表PlaylistUser彼此属于 对于某个播放列表@Playlist,我想打印与@Playlist共享用户的所有其他播放列表的列表。理想情况下,此列表将按其共享的用户数排序 此查询旨在执行此操作,但会导致错误: Playlist.joins(:users).where.not(id: @playlist.id).where(users: {id: @playlist.user_ids

不是一个傻瓜。我在问题的底部添加了原因。

我有两种型号,
Playlist
User
,它们都有许多,并且通过第三个表
PlaylistUser
彼此属于

对于某个播放列表
@Playlist
,我想打印与
@Playlist
共享用户的所有其他播放列表的列表。理想情况下,此列表将按其共享的用户数排序

此查询旨在执行此操作,但会导致错误:

Playlist.joins(:users).where.not(id: @playlist.id).where(users: {id: @playlist.user_ids}).group(:id).order('count(*) desc')
型号

class Playlist < ActiveRecord::Base
  has_many :playlist_users
  has_many :users, :through => :playlist_users
end

class PlaylistUser < ActiveRecord::Base
  belongs_to :playlist
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :playlist_users
  has_many :playlists, :through => :playlist_users
end

更新 我试着回答这个问题。我更新了model.rb文件,如下所示:

class Playlist < ActiveRecord::Base
  default_scope { order('playlists.id ASC') }
  has_many :playlist_users
  has_many :users, :through => :playlist_users
end

class PlaylistUser < ActiveRecord::Base
  default_scope { order('playlist_users.id ASC') }
  belongs_to :playlist
  belongs_to :user
end

class User < ActiveRecord::Base
  default_scope { order('users.id ASC') }
  has_many :playlist_users
  has_many :playlists, :through => :playlist_users
end
class Playlist:播放列表\u用户
结束
类播放列表用户:播放列表\u用户
结束

但是我仍然得到相同的错误。

问题在于您的分组。您想按哪个
id
分组?因为您已经加入了两个表,每个表都有一个
id
,所以postgres不知道选择哪个表


您可以尝试将
组(:id)
更改为
组('playlists.id')
组('users.id'
)。无论您希望在哪一个上进行分组。

我知道的可能重复项并不准确,但可能是这样help@JuanCarlosOropeza我尝试了该解决方案,但没有成功。我建议您首先使用
@playlist.user_id
获取
@playlist
的所有用户(ID),然后执行类似于
playlist.joins的操作(:playlist\u users).其中(user\u id:@playlist.user\u id).组(:playlist\u id).计数(:playlist\u id)
class Playlist < ActiveRecord::Base
  default_scope { order('playlists.id ASC') }
  has_many :playlist_users
  has_many :users, :through => :playlist_users
end

class PlaylistUser < ActiveRecord::Base
  default_scope { order('playlist_users.id ASC') }
  belongs_to :playlist
  belongs_to :user
end

class User < ActiveRecord::Base
  default_scope { order('users.id ASC') }
  has_many :playlist_users
  has_many :playlists, :through => :playlist_users
end