Ошибка переноса Acts_as_taggable_on - PullRequest
3 голосов
/ 08 мая 2011

Я использую Rails 3.0.6 / Ruby 1.8.7, и я пытаюсь заставить работать гем act_as_taggable_on (2.0.6), но, похоже, он не работает при миграции по умолчанию.Журнал:

==  ActsAsTaggableOnMigration: migrating ======================================
-- create_table(:tags)
   -> 0.3175s
-- create_table(:taggings)
rake aborted!
An error has occurred, all later migrations canceled:

Mysql2::Error: Can't create table 'project_development.taggings' (errno: 150): 
CREATE TABLE `taggings` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, 
`tag_id` int(11), `taggable_id` int(11), `taggable_type` varchar(255), `tagger_id` 
int(11), `tagger_type` varchar(255), `context` varchar(255), `created_at` datetime, 
FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`), FOREIGN KEY (`taggable_id`) REFERENCES 
`taggables` (`id`), FOREIGN KEY (`tagger_id`) REFERENCES `taggers`    (`id`)) ENGINE=InnoDB

Таким образом, похоже, что атрибут: polymorphic => true не работает должным образом.Google, похоже, не очень полезен (сообщается об аналогичной ошибке, например http://www.ruby -forum.com / topic / 194219 ).Есть ли способ это исправить?Альтернативы драгоценным камням?

решено automatic_foreign_key конфликтует с этим драгоценным камнем

1 Ответ

1 голос
/ 09 мая 2011

Изменили ли вы миграцию для добавления ограничений внешнего ключа?

Поставляемая миграция в актах как тег 2.0 на выглядит следующим образом:

class ActsAsTaggableOnMigration < ActiveRecord::Migration
      def self.up
        create_table :tags do |t|
          t.column :name, :string
        end

        create_table :taggings do |t|
          t.column :tag_id, :integer
          t.column :taggable_id, :integer
          t.column :tagger_id, :integer
          t.column :tagger_type, :string

          # You should make sure that the column created is
          # long enough to store the required class names.
          t.column :taggable_type, :string
          t.column :context, :string

          t.column :created_at, :datetime
        end

        add_index :taggings, :tag_id
        add_index :taggings, [:taggable_id, :taggable_type, :context]
      end

      def self.down
        drop_table :taggings
        drop_table :tags
      end
    end
...