我有一个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
。我该怎么做才能让“玩具”和“玩具”仍然是同一个标签?
答案 0 :(得分:3)
以小写形式存储所有标签,并以小写形式查找标签
Tag.find_or_or_create_by_name(name.downcase)
无论如何要找到它:
Tag.where("LOWER(name) = ?", name.downcase)