2010-07-21 64 views
1

因此,我有以下迁移 - 典型的收视表,它捕获评论的评分(值)。我有一些辅助方法主键(pk),外键(fk),索引(索引)这一切都很好。Rails迁移问题 - 外键未创建

因此,一切运行良好,但我注意到,即使此语句不报告错误,comment_id上的foregn键也不会被创建。任何帮助,将不胜感激。谢谢。

执行( “ALTER TABLE ratings添加 约束fk_ratings_comment_id 外键(COMMENT_ID)参考文献 答案(ID)ON DELETE CASCADE”)

class CreateRatings < ActiveRecord::Migration 

    extend MigrationHelpers 

    def self.up 
    create_table :ratings, :id => false do |t| 
     t.integer :comment_id, :null => false 
     t.integer :user_id, :null => false 
     t.integer :value, :null => false, :limit => 1 
     t.timestamps 
    end 

    pk :ratings, %w{ comment_id user_id } 
    fk :ratings, :comment_id, :comments, true 
    fk :ratings, :user_id, :users 
    index :ratings, %w{ comment_id value } 
    end 

回答

1

请尽量而是采用“T本.integer:COMMENT_ID,日期null =>假”

t.references:表名,:选项

+0

但是这不会在数据库中创建约束,它只会创建列定义。对? – kapso 2010-07-22 22:33:38

+0

是的,这不会创建任何约束,它只会添加一个列。但是要应用数据库约束,您需要与Model类交互。 – gsoni 2010-10-06 12:16:42