我有一个有多个Post
模型的应用程序,每个模型都有belongs_to
一个User
模型。当这些帖子发布时,PublishedPost
会创建一个模型来表示belongs_to
相关Post
模型。
我正在尝试构建一个 ActiveRecord 查询以查找与用户名匹配的已发布帖子,然后获取这些已发布帖子的 ID,但是当我pluck
在急切加载我的关联和搜索后尝试使用该方法时出现错误他们用where
方法。
这是我的控制器的(部分):
class PublishedPostsController < ApplicationController
def index
ar_query = PublishedPost.order("published_posts.created_at DESC")
if params[:searchQuery].present?
search_query = params[:searchQuery]
ar_query = ar_query.includes(:post => :user)
.where("users.name like ?", "%#{search_query}%")
end
@found_ids = ar_query.pluck(:id)
...
end
end
调用该pluck
方法时,我得到以下信息:
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'users.name' in 'where clause': SELECT id FROM `published_posts` WHERE (users.name like '%Andrew%') ORDER BY published_posts.created_at DESC
我可以得到我正在寻找的结果
@found_ids = ar_query.select(:id).map{|r| r.id}
但我宁愿使用pluck
它,因为它似乎是更清洁的方式。不过,我不知道为什么它不起作用。有任何想法吗?