Мои рельсы приложение предоставляет список услуг, которые определяются следующим образом:Rails присоединяющиеся несколько методов и областей применения
service.rb
has_and_belongs_to_many :clients
has_many :translations, class_name: ServiceTranslation, dependent: :destroy
def with_translation(lang)
includes(:translations)
.where("service_translations.language_id=?", lang.id)
.references(:service_translations)
end
scope :with_clients, -> { select("services.*, count(clients_services.service_id) as clients_count")
.joins(:clients).group('services.id').order('clients_count desc') }
Так with_translation метод стремится загружая переводы для (имя, контент и т. д.) и область with_clients гарантирует, что услуги упорядочены по количеству связанных клиентов (также, если ни один клиент не связан с сервисом, услуга не отображается)
Оба метода работают, когда называют отдельно в моем services_controller:
services_controller.rb
class ServicesController < ApplicationController
def index
#@services = Service.with_clients.page(params[:page])
#or
@services = Service.with_translation(@lang).page(params[:page])
end
end
Все хорошо и денди, но мне нужны оба этих методов совместной работы, так что, когда я делаю это:
@services = Service.with_clients.with_translation(@lang).page(params[:page])
Я получаю сообщение об ошибке:
PG :: Ошибка: ОШИБКА: колонка "clients_count" не ExI st LINE 1: SELECT DISTINCT "services". "id", clients_count AS alias_0 F ...
Я попытался объединить два метода, создав весь запрос в контроллере, как зря ... любая помощь быть оцененным!
Вы уверены, что 'with_translation' является методом экземпляра? Можете ли вы предоставить полный журнал? Также вы можете предоставить журналы SQL при вызове областей отдельно? –