2010-07-21 3 views
1

그래서 다음과 같은 마이 그 레이션 - 일반적인 등급 테이블을 사용하여 주석에 대한 등급 (값)을 캡처합니다. 나는 기본 키 (pk), 외래 키 (fk), 인덱스 (인덱스)에 대한 몇 가지 도우미 메서드가 있습니다.레일 마이그레이션 문제 - 외래 키가 생성되지 않음

모든 것이 잘 실행되지만이 문이 오류를보고하지는 않지만 comment_id의 foregn 키가 생성되지 않는다는 점에 유의하십시오. 어떤 도움을 주시면 감사하겠습니다. 감사.

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을 사용하는이 시도하십시오 ("ALTER TABLE 등급은 ADD 제약 FOREIGN KEY (comment_id가) 답변 DELETE CASCADE ON (ID)를 참고 문헌 fk_ratings_comment_id ") 실행 .integer : comment_id, : null => false "

t.references : table_name, : options

+0

하지만 데이터베이스에서 제약 조건을 만들지는 않습니다. 단지 열 정의 만 생성합니다. 권리? – kapso

+0

네,이 제약 조건을 만들지 않을거야, 그냥 열을 추가합니다.하지만 데이터베이스에 대한 제약 조건을 적용하려면 Model 클래스와 상호 작용해야합니다. – gsoni

관련 문제