SQL

因此,在为我的Rails应用程序搜索标签宝石后,我发现了令人惊叹的行为标签宝石。 安装它并玩耍时,我发现它将标签db中的所有标签保留在只包含Tag.name而没有上下文的位置,而上下文保存在:through关系db(taggings)中。 对于大多数目的,我可以看到这是完美的。 除了我的应用,我希望能够为用户提供基于预先存在的标签进行标签的能力(例如,不允许他们创建自己的标签),而且作为标签的行为不具备搜索所有标签的能力在内置的一个上下文中(例如,如果我要提供标记数据库的自动完成功能,那么我将在应用程序中包含所有标记,而不是我想要的)

下面的方法是我刚刚充实,看看它是否会起作用(它是这样做的),但我想知道我是否缺少一些与行为标签相关的东西。 我的意思是我看不到任何提供这种方法的地方?

<% ActsAsTaggableOn::Tagging.find_all_by_context("tags").each do |tagging| %>
  <%= tagging.tag %>
<% end %>

如果例如行为作为标签不这样做,这是做到这一点的最好方法吗? 这感觉有点不高兴,我会更好地做一个自定义的SQL查询,而不是通过行为作为标签的路由吗?

如果它有助于我的日志尾巴:

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)

你也可以使用如下语句:

# Returns all the tags for the specified model/context with a count >= 1
@tags = YourModel.tag_counts_on(**context**)

添加限制和顺序:

# Get the top 5 tags by count
@tags = YourModel.tag_counts_on(**context**, :limit => 5, :order => "count desc")

使用从tag_counts_on返回的标记的count属性访问计数

tag.count

我相信这是User.tag_counts_on(:tags)的: User.tag_counts_on(:tags)

=> [#<ActsAsTaggableOn::Tag id: 1, name: "foo">,
#<ActsAsTaggableOn::Tag id: 2, name: "bar">,
#<ActsAsTaggableOn::Tag id: 3, name: "sushi">,
#<ActsAsTaggableOn::Tag id: 4, name: "pizza">]
链接地址: http://www.djcxy.com/p/6099.html

上一篇: sql

下一篇: How to make