いくつかのPostモデルがあり、それぞれがモデルでbelongs_toあるアプリがありUserます。これらの投稿が公開されると、関連するモデルのPublishedPostモデルが作成されます。belongs_toPost
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しかし、私はそれがよりクリーンな方法のように見えるので、むしろ使用したいと思います。しかし、なぜそれが機能しないのか理解できません。何か案は?