В моем приложении у меня есть Factoids, каждый из которых помечен разными тегами. Я пытаюсь создать индексную страницу, на которой перечислены все теги и показано, сколько фактоидов помечено этим тегом. Я понял, как создать список тегов, но не могу понять, как получить счет.
У меня есть три фактоида, каждый из которых помечен элементами в скобках:
- Factoid One («Красный», «Синий»)
- Фактоид два («Красный», «Зеленый»)
- Фактоид номер три («Красный», «Синий», «Розовый»)
То, что я пытаюсь сделать, это распечатать таблицу, которая покажет следующее...
- Красный: 3
- Синий: 2
- Зеленый: 1
- Розовый: 1
У меня есть это, на мой взгляд, которое дает мне имена тегов, но я не знаю, как подсчитать их появление.
<% @tags.each do |tag| %>
<%= link_to tag.name, tag_path(tag.name) %>
<% end %>
Мне также удалось написать запрос MySQL, который делает это...
SELECT tags.name, count(tags.id) AS count
FROM `tags`
LEFT OUTER JOIN taggings ON taggings.tag_id = tags.id
GROUP BY tags.id;
Как я могу сделать этот запрос в RoR?
Вот моя схема БД
ActiveRecord::Schema.define(:version => 20140423203020) do
create_table "factoids", :force => true do |t|
t.string "title"
t.text "description"
t.string "name"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "taggings", :force => true do |t|
t.integer "tag_id"
t.integer "taggable_id"
t.string "taggable_type"
t.integer "tagger_id"
t.string "tagger_type"
t.string "context", :limit => 128
t.datetime "created_at"
end
create_table "tags", :force => true do |t|
t.string "name"
end
# Foreign Keys and indexes for taggings
add_index("taggings", ["tag_id"], :name => "index_taggings_on_tag_id")
add_index("taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context")
end