【发布时间】:2014-10-19 09:03:40
【问题描述】:
我的表中有标签列
标签字段会有类似的数据
1. PHP, Ruby on Rails
2. PHP
3. Javascript, PHP, Ruby on Rails
将此视为我的过滤器
PHP(2)
Ruby on Rails(5)
Javascript(0)
进行这种标签管理最有效的方法是什么?
【问题讨论】:
标签: mysql ruby-on-rails ruby-on-rails-4 search
我的表中有标签列
标签字段会有类似的数据
1. PHP, Ruby on Rails
2. PHP
3. Javascript, PHP, Ruby on Rails
将此视为我的过滤器
PHP(2)
Ruby on Rails(5)
Javascript(0)
进行这种标签管理最有效的方法是什么?
【问题讨论】:
标签: mysql ruby-on-rails ruby-on-rails-4 search
标签应该被规范化,然后你可以进行 SQL 查询,按标签分组。
像这样的模型应该这样做。
class Post < ActiveRecord::Base
has_many :taggings
has_many :Tags, through: :taggings
end
class Tagging < ActiveRecord::Base
belongs_to :post
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :taggings
has_many :posts, through: :taggings
end
【讨论】:
您可以在这里选择。
你有帖子,每个帖子都有很多标签,每个标签都可以在很多帖子中找到。在内部,这是通过一个额外的表完成的:你有一个 posts 的列表,一个 tags 的列表和一个对 post-tag 的列表。性能很好,这就是关系数据库的设计目的。
因为您可能不需要在任何特定的帖子及其标签对上指定额外的数据(例如,当标签被分配给帖子时,如果这可能有用的话),您应该使用 HABTM,因为它更简单。
说到每个标签上的帖子计数:您可以使用名为counter_cache 的功能(参见上面链接的同一页面),它可以跟踪每个标签中有多少相关帖子。
【讨论】: