С помощью этой публикации я смог создать область для фильтрации трендовых досок.Я сейчас ищу, чтобы создать область на родительской модели плат.Поэтому вместо того, чтобы вернуть доски, я хочу, чтобы у всех родителей были доски с трендами.К сожалению, я получаю эту ошибку:
ActiveRecord::StatementInvalid (PG::SyntaxError: ERROR: subquery has too many columns)
Вот как настраивается моя область действия:
scope :trending, -> { where(board: Board.trending) }
Вот полное описание отношений:
class Album < ApplicationRecord
has_one :board, as: :boardable
scope :trending, -> { where(board: Board.trending) }
end
class Artist < ApplicationRecord
has_one :board, as: :boardable
scope :trending, -> { where(board: Board.trending) }
end
class Board < ApplicationRecord
belongs_to :boardable, polymorphic: true, optional: true
scope :trending, -> {
joins(:posts)
.select("boards.*, count(posts.id) as latest_posts_count")
.where('posts.created_at >= ?', 7.days.ago)
.where(board_category_id: nil)
.order('latest_posts_count desc')
.group('boards.id')
.limit(10)
}
end