mysql - Rails 迁移问题 - 未创建外键

标签 mysql ruby-on-rails database migration

所以我有以下迁移 - 典型的评级表,它捕获评论的评级(值)。我有一些用于主键 (pk)、外键 (fk)、索引 (index) 的辅助方法,这些都很好。

所以一切运行良好,但我注意到 comment_id 上的外键没有创建,即使这个语句没有报告错误。任何帮助,将不胜感激。谢谢。

execute("ALTER TABLE ratings ADD CONSTRAINT fk_ratings_comment_id FOREIGN KEY (comment_id) REFERENCES answers(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

最佳答案

请试试这个而不是使用“t.integer :comment_id, :null => false”

t.references :table_name,:options

关于mysql - Rails 迁移问题 - 未创建外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3303216/

相关文章:

php - 如何修改具有自动增量字段的行?

mysql - 连接表中没有行引用其连接的表中的任何行

sql - 如果 where 条件为 !=?,则不使用数据库索引

php - 尝试将 MySql 数据库行转换为链接,以便用户可以选择他们想要查看的内容

mysql - 动态MySQL表

Android 到 Web 服务器开发 mySql

javascript - 根据表单输入生成动态 url

除非我刷新,否则 JavaScript/Coffeescript 不会执行

php - 如何将.sql表文件导入到mysql表

ruby-on-rails - CarrierWave S3 Permission denied 错误尝试从 tmp 读取