いくつかの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
しかし、私はそれがよりクリーンな方法のように見えるので、むしろ使用したいと思います。しかし、なぜそれが機能しないのか理解できません。何か案は?