У меня есть следующие модели:Rails 3 ActiveRecord запроса, возвращающие все записи модели и включают в себя подсчет связанных записей в одном запросе
class Keyword < ActiveRecord::Base
has_many :tags
has_many :studies, :through => :tags
end
class Tag < ActiveRecord::Base
belongs_to :keyword
belongs_to :study
end
class Study < ActiveRecord::Base
has_many :tags
has_many :keywords, :through => :tags
end
хочу массив, содержащий все ключевые слова, и каждое ключевое слово, и количество исследований помеченного с этим ключевым словом, так что я могу сказать:
<ul>
<% @keywords.each do |keyword| %>
<li><%= "(#{keyword.number_of_studies}) #{keyword.title}") %></li>
<% end %>
</ul>
Я уверен, что это возможно, вопрос: как?
Хорошо, это определенно решает проблему. Я надеюсь на какой-то запрос AREL, хотя это даст мне счет как часть запроса, когда я получу все ключевые слова. Я дал вам голос. –
Хорошо, я обновил свой ответ тем, что вы хотите. Я все еще придерживаюсь мнения, что вы должны либо использовать 'counter_cache', либо выполнять два запроса. Это делает ваш код намного чище и менее подвержен ошибкам. – Ariejan
Спасибо за подробный ответ, я могу заключить синтаксис запроса Rails 3 AREL из того, что у вас есть, и что у вас есть именно то, что я ищу. –