0

私はactastaggableon gemを使用しています。何らかの理由で、システムはタグ「Python」を「python (小文字)」として保存しています。ユーザーが特定のタグしか入力できないことを検証しているため、タグを「python」として保存するシステムが問題を引き起こしています。以下は私のサーバーログです。最初の行は、すべての検証が実行された (合格した) 後の tag_list の puts ステートメントです。その後、サーバーは奇妙なことを行い、「Python」を「python」に変えています。以前は「python」というタグを付けていたので、これはキャッシュに関係している可能性がありますが、今はそうではありません。キャッシュ設定を大幅に変更せずにこれを修正するにはどうすればよいですか?

    ["IOS | IPhone | IPad", "App and Web development", "PHP", "Rails", "Python"]
      ActsAsTaggableOn::Tag Load (0.8ms)  SELECT "tags".* FROM "tags" WHERE (lower(name) = 'ios | iphone | ipad' OR lower(name) = 'app and web development' OR lower(name) = 'php' OR lower(name) = 'rails' OR lower(name) = 'python')
      ActsAsTaggableOn::Tag Load (0.8ms)  SELECT "tags".* FROM "tags" WHERE (lower(name) = 'ios | iphone | ipad' OR lower(name) = 'app and web development' OR lower(name) = 'php' OR lower(name) = 'rails' OR lower(name) = 'python')
      CACHE (0.0ms)  SELECT "tags".* FROM "tags" INNER JOIN "taggings" ON "tags"."id" = "taggings"."tag_id" WHERE "taggings"."taggable_id" = $1 AND "taggings"."taggable_type" = $2 AND (taggings.context = 'tags' AND taggings.tagger_id IS NULL)  [["taggable_id", 16], ["taggable_type", "Profile"]]
      CACHE (0.0ms)  SELECT "tags".* FROM "tags" INNER JOIN "taggings" ON "tags"."id" = "taggings"."tag_id" WHERE "taggings"."taggable_id" = $1 AND "taggings"."taggable_type" = $2 AND (taggings.context = 'tags' AND taggings.tagger_id IS NULL)  [["taggable_id", 16], ["taggable_type", "Profile"]]
      ActsAsTaggableOn::Tagging Exists (0.6ms)  SELECT 1 AS one FROM "taggings" WHERE ("taggings"."tag_id" = 1 AND "taggings"."taggable_type" = 'Profile' AND "taggings"."taggable_id" = 16 AND "taggings"."context" = 'tags' AND "taggings"."tagger_id" IS NULL AND "taggings"."tagger_type" IS NULL) LIMIT 1
      ActsAsTaggableOn::Tagging Exists (0.6ms)  SELECT 1 AS one FROM "taggings" WHERE ("taggings"."tag_id" = 1 AND "taggings"."taggable_type" = 'Profile' AND "taggings"."taggable_id" = 16 AND "taggings"."context" = 'tags' AND "taggings"."tagger_id" IS NULL AND "taggings"."tagger_type" IS NULL) LIMIT 1
      SQL (3.8ms)  INSERT INTO "taggings" ("context", "created_at", "tag_id", "taggable_id", "taggable_type") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["context", "tags"], ["created_at", Tue, 25 Mar 2014 16:05:41 EDT -04:00], ["tag_id", 1], ["taggable_id", 16], ["taggable_type", "Profile"]]
      SQL (3.8ms)  INSERT INTO "taggings" ("context", "created_at", "tag_id", "taggable_id", "taggable_type") VALUES ($1, $2, $3, $4, $5) RETURNING "id"  [["context", "tags"], ["created_at", Tue, 25 Mar 2014 16:05:41 EDT -04:00], ["tag_id", 1], ["taggable_id", 16], ["taggable_type", "Profile"]]
4

1 に答える 1

0

これをどこかに設定しましたか:

ActsAsTaggableOn.force_lowercase = true

もしそうなら、それは小文字を強制しています

そのセットがない場合、次の場所にある db に mysql を使用している場合に別の問題が発生する可能性があります: https://github.com/mbleigh/acts-as-taggable-on/issues/259

class EditTagTableToBeCaseSensitive < ActiveRecord::Migration
  def up
    @sql = "ALTER TABLE `tags` CHANGE `name` `name` VARCHAR(255) BINARY DEFAULT NULL;"
    execute @sql
  end

  def down
    @sql = "ALTER TABLE `tags` CHANGE `name` `name` VARCHAR(255) DEFAULT NULL;"
    execute @sql
  end
end
于 2014-03-25T20:24:33.840 に答える