我有一個應用程序,它有多個Post
模型,其中每個模型都有belongs_to
和User
模型。當這些帖子發佈時,PublishedPost
模型創建爲belongs_to
相關的Post
模型。ActiveRecord:不能使用`pluck`在具有熱切加載的關聯的`where'子句之後
我想構建一個ActiveRecord查詢來查找與用戶名匹配的已發佈帖子,然後獲取這些已發佈帖子的ID,但是當我嘗試在eager-加載我的關聯並用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
,因爲它似乎更清潔的方式去。但我無法弄清楚它爲什麼不起作用。有任何想法嗎?
Yessss!我不知道爲什麼這不是在文檔中?至少我沒有看到它。 – FireDragon