2010-07-21 1 views
1

Итак, у меня есть следующая таблица переназначения - типичная таблица оценок, которая фиксирует оценки (значение) для комментариев. У меня есть вспомогательные методы для первичного ключа (pk), внешнего ключа (fk), index (index), который все в порядке.Проблема с перенаправлением Rails - внешний ключ не создается

Итак, все работает нормально, но я заметил, что ключ foregn в comment_id не создается, хотя этот оператор не сообщает об ошибке. Любая помощь будет оценена по достоинству. Благодарю.

Execute ("ALTER TABLE рейтинги ADD CONSTRAINT fk_ratings_comment_id FOREIGN KEY (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

Пожалуйста, попробуйте это вместо того, чтобы использовать «т .integer: comment_id,: null => false "

t.references: table_name,: options

+0

но это не создаст ограничений в базе данных, оно создаст только определения столбцов. Правильно? – kapso

+0

Да, это не создаст никаких ограничений, оно просто добавит столбец. Но для применения ограничений к базе данных вам необходимо взаимодействовать с классом модели. – gsoni