如何在数据库rails mysql中搜索逗号分隔的字段

时间:2014-08-26 05:57:21

标签: ruby-on-rails search ruby-on-rails-4 mysqli

我的表格中有标签栏

标签字段将包含

等数据
1. PHP, Ruby on Rails
2. PHP
3. Javascript, PHP, Ruby on Rails

将此视为我的过滤器

PHP(2)
Ruby on Rails(5)
Javascript(0)

进行此标记管理的最有效方法是什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你有选择。

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

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

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