У меня проблема с упорядочением результатов поиска по рельсам. Я хочу заказать посты после того, как искал или фильтровал, но то, что я делаю, похоже, не работает. Вот мой код.
posts_controller.rb
display
@posts = Post.where("user_id IN (?)", current_user.following_ids)
@posts = @posts.find(Like.group(:post_id).pluck(:post_id)).order(params[:change]) if params[:change].present?
end
У меня есть posts_controller, который отображает записи, за которыми следит пользователь, он работает нормально. Однако, когда я добавил дополнительный код, пытаясь упорядочить посты по количеству лайков, произошла ошибка. Кажется, что вторая строка в пост-контроллере извлекает все посты с лайками, а не только посты, за которыми следит пользователь. Если я заменю @ posts.find на Post.find, все результаты постов будут показаны и упорядочены по количеству лайков.
кстати, этот @ posts.order (создал_кат :: des c) работает нормально. Он заказывает только сообщения, за которыми следит пользователь.
like.rb
class Like < ApplicationRecord
belongs_to :post, foreign_key: "post_id"
belongs_to :user
validates_uniqueness_of :post_id, scope: :user_id
end
like_controller.rb
class LikesController < ApplicationController
def create
@like = current_user.likes.create(post_id: params[:post_id])
redirect_back(fallback_location: root_path)
end
def destroy
@like = Like.find_by(post_id: params[:post_id], user_id: current_user.id)
@like.destroy
redirect_back(fallback_location: root_path)
end
end
Я очень новичок в программировании, поэтому, пожалуйста, прости меня если я задаю глупый вопрос. Спасибо всем большое.
Сообщение об ошибке ниже: