Ich habe eine App, die eine Anzahl von Post
Modellen hat, von denen jedes belongs_to
ein User
Modell ist. Wenn diese Beiträge veröffentlicht werden, wird ein PublishedPost
Modell erstellt, das belongs_to
das entsprechende Post
Modell.ActiveRecord: kann `pluck` nach` where` Klausel mit eifrig geladenen Assoziationen nicht verwenden
Ich versuche eine ActiveRecord-Abfrage zu erstellen, um veröffentlichte Posts zu finden, die einem Benutzernamen entsprechen, und dann die IDs dieser veröffentlichten Posts zu erhalten, aber ich erhalte einen Fehler, wenn ich versuche, die pluck
-Methode zu verwenden. Laden Sie meine Assoziationen und suchen Sie sie mit der where
Methode.
Hier ist (Teil) mein 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
Wenn die pluck
Methode aufgerufen wird, bekomme ich diese:
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
ich die Ergebnisse erhalten, kann ich suche mit
@found_ids = ar_query.select(:id).map{|r| r.id}
aber ich würde eher pluck
verwenden, wie es scheint, der sauberere Weg zu gehen. Ich kann nicht herausfinden, warum es nicht funktioniert. Irgendwelche Ideen?
Yessss! Ich weiß nicht, warum das nicht in den Dokumenten ist? Zumindest habe ich es nicht gesehen. – FireDragon