2011-07-17 21 views
0

我有创建标签不区分大小写轨

has validates_uniqueness_of :name, :case_sensitive => false

,然后我有一个的before_filter ,对于后

Tag.find_or_create_by_name(name)

当我创建创建这些标签的标签模型然后分配标签“玩具”它创建它成功,然后我做一个新的职位,并添加标签“玩具”,并得到这个Validation failed: Name has already been taken。我应该怎么做才能让“玩具”和“玩具”仍然是同一个标签?在downcase

回答

3

存放在downcase所有标签,找到标签

Tag.find_or_or_create_by_name(name.downcase) 

如果一定要找到它:

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

+1,然后你可以@ tag.name.capitalize拿回来给目前的形式。 – s84

+0

谢谢,我忘了.downcase – Kevin