Acts_as_taggable_on迁移失败
问题描述:
我正在使用Rails 3.0.6/Ruby 1.8.7,我一直试图让acts_as_taggable_on(2.0.6)gem工作,但它似乎在默认迁移时失败。 日志:Acts_as_taggable_on迁移失败
== 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
所以它看起来像多态=> true属性并不像预期的那样。谷歌似乎不是很有帮助(类似的错误报告,例如http://www.ruby-forum.com/topic/194219)。任何方式来解决它?宝石的替代品?
解决 这种宝石
答
automatic_foreign_key冲突你修改迁移添加外键约束?
的行为-AS-加标签上2.0.6提供的迁移如下所示:
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
+0
该死的,我没有,但其中一个包括的宝石确实。 – vanzi 2011-05-09 05:59:08
那么你是怎么解决的呢?你停止使用automatic_foreign_key了吗? – andrewdotnich 2011-12-15 03:28:38