我试图从多个表中检索记录,基于下面查询的it集合,它运行良好。
活动记录查询:
Song.order("songs.id desc")。包括(:艺人).includes(:专辑)。联接(“在songs.artist_id =artists.id上左加入艺术家”)。联接(“songs.album_id =albums.id上的左连接专辑”)。其中(“”(songs.id) 在(#{song_ids*,'})和(较低(songs.title)相似:术语或较低(artists.name)相似:术语或较低(albums.title)相似:术语“,术语=> "%#{termsindex.downcase}%")中
PG查询输出:
从“歌曲”中选择“歌曲”.*,左加入songs.artist_id = artists.id上的艺术家,左加入songs.album_id = albums.id所在的专辑( ( songs.id ) IN (4,5,28,37,46,48)和(较低(songs.title)如'%wo%‘或较低(artists.name)如'%wo%’或‘%wo%’(albums.title))顺序)
但是,当我试图修改查询时,如下所示
活动记录查询:
Song.order("songs.id desc")。包括(:艺人).includes(:专辑)。联接(“在songs.artist_id =artists.id上左加入艺术家”)。联接(“songs.album_id =albums.id上的左连接专辑”)。其中(“”(songs.id) 在(:song_ids)和(较低(songs.title)相似:术语或较低(artists.name)相似:术语或较低(albums.title)相似:term )中,
:term => "%#{terms[index].downcase}%",:song_ids => song_ids*',')PG查询输出:
从“歌曲”中选择“歌曲”.*,左加入songs.artist_id = artists.id上的艺术家,左加入songs.album_id = albums.id所在的专辑( ( songs.id ) IN ('4,5,28,37,46,48')和(较低(songs.title)如'%wo%‘或较低(artists.name)类似'%wo%’或较低(albums.title)如‘%wo%’)顺序
由于单引号,上面的查询不起作用。
发布于 2013-06-19 01:23:00
尝试将:song_ids => song_ids*','替换为:song_ids => song_ids。
在您的原始代码中,您将song_ids转换为string,该字符串被转义,单引号用于标记它是一个字符串。它只将数组作为参数传递,rails将执行此操作,并将其转换为如下内容:4、5、28、37、46、48(您仍然需要括号)。
https://stackoverflow.com/questions/13160441
复制相似问题