Ruby / Rails - найти внешний ключ с большинством экземпляров в модели - PullRequest
1 голос
/ 22 февраля 2011

У меня есть объединенная модель с внешним ключом для события модели.

Объединенная модель называется Целями. Я пытаюсь найти правильное условие поиска, чтобы выяснить, какой event_id имеет наибольшее количество экземпляров в модели объединения целей. По сути, у какого идентификатора внешнего ключа больше всего записей в модели соединения.

Есть ли способ сделать это?

 Goal.where(:event.id => ??????? ).first

Ответы [ 2 ]

1 голос
/ 22 февраля 2011

Не могу придумать более элегантное решение, но попробуйте это:

results = Goal.connection.select_all('SELECT COUNT(*) as amount, event_id FROM goals GROUP BY event_id ORDER BY amount DESC LIMIT 0, xx')
raise results.inspect

Если вам нужен только один самый event_id с большинством записей, вы также можете использовать:

event_id = Goal.connection.select_one('SELECT COUNT(*) as amount, event_id FROM goals GROUP BY event_id ORDER BY amount DESC LIMIT 1').first
0 голосов
/ 07 июля 2012

Если вы правильно настроили свои модели, вы сможете это сделать (если это не так, то: правильно настройте свои модели ):

if Event.all.length == 0
    return
end

eventMax = Event.first
Event.all.each do |e|
    eventMax = e.goals.length>eventMax.goals.length?e:eventMax
end

#output or do whatever with your newly found event
puts eventMax.to_json

Решениеот Дэнни не очень хорошо.

Вы никогда не должны (или, по крайней мере, очень редко) самостоятельно писать sql в рельсах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...