У меня есть две модели.
class Tourist < ApplicationRecord
has_many :visits
has_many :countries, through: :visits
end
class Country < ApplicationRecord
has_many :visits
has_many :tourists, through: :visits
end
class Visit < ApplicationRecord
belongs_to :country
belongs_to :tourist
end
Я пытаюсь найти способ сортировки стран по количеству туристических ассоциаций.
Меня убеждают, что я должен присоединитьсятаблица туриста со странами, затем группируйте по туристам перед тем, как размещать группу с наибольшим количеством наверху.
Country.joins(:tourist).group(:tourist_id).order('COUNT(*)')
Однако это не совсем верно.Во-первых, я получаю предупреждение об амортизации.
DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with a non-attribute argument(s): "COUNT(*)". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql(). (called from __pry__ at (pry):61)
Кроме того, я не думаю, что получаю правильные значения, потому что все после first
равно нулю.
Что является правильнымспособ получить записи с наибольшим количеством ассоциаций?