创建标签不区分大小写的rails

时间:2011-07-17 19:57:51

标签: ruby-on-rails ruby activerecord tagging

我有一个Tag模型

has validates_uniqueness_of :name, :case_sensitive => false

然后我有一个before_filter 为帖子

创建这些标签

Tag.find_or_create_by_name(name)

当我创建帖子然后分配标签“玩具”时,它会成功创建它,然后我会做一个新帖子并添加标签“toy”并获得此Validation failed: Name has already been taken。我该怎么做才能让“玩具”和“玩具”仍然是同一个标签?

1 个答案:

答案 0 :(得分:3)

以小写形式存储所有标签,并以小写形式查找标签

Tag.find_or_or_create_by_name(name.downcase)

无论如何要找到它:

Tag.where("LOWER(name) = ?", name.downcase)