Это возможный заставить ActiveRecord создать объекты для строк, загруженных с помощью: опция соединений?

Я связался со службой поддержки JXBrowser. Они предложили использовать системное свойство jxbrowser.threads.configureContextClassLoader, как описано здесь https://jxbrowser.support.teamdev.com/support/discussions/topics/9000044535 .

Установка его в значение true устранила проблему.

5
задан mwigdahl 24 March 2009 в 20:42
поделиться

2 ответа

Во-первых, необходимо действительно использовать: включайте вместо: соединения

User.find(:all, :include => { :abuse_reports => [ :game ] }, :order => )

или в Вашем случае попробовать

User.page(params[:page], :include => { :abuse_reports => [ :game ] })

Это выполнит соединение для Вас и получит записи в одном выстреле.

Теперь, это может получить данную игровую запись для Вас многократно (если та же игра связывается с пользователем несколькими отчетами.), Если Ваша игровая запись является большой, можно уменьшить объем данных, которым обмениваются между приложением и RDBMS следующим образом:

class User < ActiveRecord::Base
  has_many :abuse_reports
  has_many :abused_games, :through => :abuse_reports
end
...

User.find(:all, :include => [ :abuse_reports, :abused_games ])

Наконец, Вы также хотите получить количества и вид соответственно. Проверьте http://railscasts.com/episodes/23 для того, как добавить встречные кэши в фактические активные записи (встречные кэши упрощают SQL и делают жизнь RDBMS легче и Ваши запросы выполненный быстрее). После установки встречных кэшей можно наконец изменить вышеупомянутое, чтобы сделать:

User.find(:all, :include => [ :abuse_reports, :abused_games ], :order => 'users.abused_games_count DESC, users.abuse_reports_count DESC')

Это в конечном счете получит Ваш ActiveRecords в одном единственном, простом SQL-операторе.

11
ответ дан 18 December 2019 в 13:19
поделиться

Проблема, которую Вы имеете, состоит в том, что Вы используете ActiveRecord способом, который, как не "предполагают", использовался. Этим я подразумеваю, что Вы пишете свой собственный sql, который заставляет AR бросить все свое управление Вам.

Если Вы хотите, чтобы AR обработал все, что необходимо попытаться использовать его с меньшим количеством собственного SQL там. Похоже, что Вы хотите знать, у какого пользователя есть самое высокое количество AbuseReports. Попробуйте что-то вроде этого:

some_user.abuse_reports.count

получить количество abuse_reports

3
ответ дан 18 December 2019 в 13:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: