Ho un'app che ha un numero di modelli Post
, ognuno dei quali è il modello User
a. Quando questi post vengono pubblicati, viene creato un modello PublishedPost
che è il belongs_to
relativo al modello Post
.ActiveRecord: impossibile utilizzare `pluck` dopo la clausola` where` con associazioni caricate con appetito
Sto cercando di creare una query ActiveRecord per trovare i post pubblicati che corrispondono a un nome utente, quindi ottenere gli ID di quei post pubblicati, ma ricevo un errore quando tento di utilizzare il metodo pluck
dopo avido- caricamento delle mie associazioni e ricerca con il metodo where
.
Ecco (parte di) il mio controller:
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
Quando il metodo pluck
viene chiamato, ottengo questo:
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
posso ottenere i risultati che sto cercando con
@found_ids = ar_query.select(:id).map{|r| r.id}
ma preferisco usare pluck
come sembra il modo più pulito per andare. Non riesco a capire perché non funziona, però. Qualche idea?
Yessss! Non so perché questo non è nei documenti? Almeno non l'ho visto. – FireDragon