Итак, после поиска метки для моего приложения rails я нашел удивительный acts-as-taggable gem. Установив его и играя, я обнаружил, что он хранит все теги внутри тега db, который просто содержит Tag.name без контекста, вместо этого контекст сохраняется в: через отношение db (taggings). Для большинства целей я вижу, что это прекрасно. За исключением моего приложения, я хочу иметь возможность предлагать пользователю возможность теги на основе уже существующих тегов (например, не позволять им создавать свои собственные) и acts-as-taggable не имеет возможности искать все теги внутри одного встроенного контекста (например, если бы я хотел представить автозаполнение тега db, я бы включил все теги в моем приложении, которые 'nt, что я хочу)
Метод ниже - это то, что я только что создал, чтобы увидеть, будет ли он работать (что он делает), но я подумал, не пропал ли что-то с acts-as-taggable. Я имею в виду, что я не вижу нигде, который предлагает этот метод?
<% ActsAsTaggableOn::Tagging.find_all_by_context("tags").each do |tagging| %>
<%= tagging.tag %>
<% end %>
Если, например, acts-as-taggable не делает этого, это лучший способ сделать это? Он чувствует себя немного неэффективным, лучше ли я делать собственный SQL-запрос вместо маршрутизации через acts-as-taggable?
Если это помогает во всех heres хвост моего журнала:
Started GET "/users" for 127.0.0.1 at 2011-01-04 14:46:20 +0000
Processing by UsersController#index as HTML
SQL (0.5ms) SELECT name
FROM sqlite_master
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
User Load (0.1ms) SELECT "users".* FROM "users"
ActsAsTaggableOn::Tagging Load (0.5ms) SELECT "taggings".* FROM "taggings" WHERE ("taggings"."context" = 'languages')
ActsAsTaggableOn::Tag Load (0.1ms) SELECT "tags".* FROM "tags" WHERE ("tags"."id" = 2) LIMIT 1
Rendered users/index.html.erb within layouts/application (10.4ms)