【问题标题】:how to search comma separated field in database rails mysql如何在数据库rails mysql中搜索逗号分隔的字段
【发布时间】: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】:

    标签应该被规范化,然后你可以进行 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
    

    【讨论】:

    • 你要标记的实体是什么?
    【解决方案2】:

    您可以在这里选择。

    你有帖子,每个帖子都有很多标签,每个标签都可以在很多帖子中找到。在内部,这是通过一个额外的表完成的:你有一个 posts 的列表,一个 tags 的列表和一个对 post-tag 的列表。性能很好,这就是关系数据库的设计目的。

    因为您可能不需要在任何特定的帖子及其标签对上指定额外的数据(例如,当标签被分配给帖子时,如果这可能有用的话),您应该使用 HABTM,因为它更简单。

    说到每个标签上的帖子计数:您可以使用名为counter_cache 的功能(参见上面链接的同一页面),它可以跟踪每个标签中有多少相关帖子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-24
      • 2013-06-07
      • 2011-11-14
      • 2015-09-05
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2010-10-18
      相关资源
      最近更新 更多