在我的控制器中,我收到的电影是:
movies = Movie.active.includes(:likes).references(:likes).where("likes.user_id = ?", user.id).joins(:collections).active.uniq
然后我订购并过滤它们:
@movies = movies.order(query_order).offset(offset).limit(limit + 1)
PG中的此输出:错误:PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
我很快发现您必须选择您订购的字段。所以我在查询中添加了.select("movies.*, likes.*")
。
movies = Movie.select("movies.*, likes.*").active.includes(:likes).references(:likes).where("likes.user_id = ?", user.id).joins(:collections).active.uniq
它工作得很好,除了现在Paperclip搞砸了很多时间。 HTML呈现完全与以前相同,但不知何故图像不显示/处理。
=image_tag movie.cover.url(:expanded), :class => "expanded"
当我从查询中删除.select("movies.*, likes.*")
和.uniq
时,它有重复的项目,但图片工作正常。
答案 0 :(得分:1)
由于我与movies
加入了likes
,因此它检索了movie.id
和likes.id
。
这个回形针助手无法处理两个id's
,因此随机选择了likes
id。
=image_tag movie.cover.url(:expanded), :class => "expanded"
结果产生了错误的路径:iE。 /movies/system/007/movie_with_id_01_image.jpg
。
我必须更改select
子句,现在不包括likes.id
。
.select("movies.*, likes.*")
.select("movies.*, likes.column_a, likes.column_b, ... , likes.column_x")
现在它终于再次运作了。