Tôi có một ứng dụng có một số mô hình Post
, mỗi mô hình belongs_to
một mô hình User
. Khi các bài đăng này được xuất bản, một mô hình PublishedPost
được tạo ra belongs_to
mô hình Post
có liên quan.ActiveRecord: không thể sử dụng `pluck` sau mệnh đề` where` với các liên kết mong muốn
Tôi đang cố gắng tạo truy vấn ActiveRecord để tìm các bài đăng được xuất bản khớp với tên người dùng, sau đó lấy id của các bài đăng được xuất bản đó, nhưng tôi gặp lỗi khi cố gắng sử dụng phương pháp pluck
sau khi háo hức- tải các hiệp hội của tôi và tìm kiếm chúng bằng phương pháp where
.
Dưới đây là (một phần của) điều khiển của tôi:
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
Khi phương pháp pluck
được gọi, tôi có được điều này:
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
tôi có thể nhận được kết quả tôi đang tìm kiếm với
@found_ids = ar_query.select(:id).map{|r| r.id}
nhưng tôi muốn sử dụng pluck
vì dường như đó là cách dọn sạch hơn. Tôi không thể hiểu tại sao nó không hoạt động. Ý tưởng nào?
Yessss! Tôi không biết tại sao điều này không có trong tài liệu? Ít nhất tôi không thấy nó. – FireDragon