Ruby on Rails 3.2.3在rake db:migrate之后没有创建外键(MySQL db)

时间:2012-04-28 18:01:04

标签: ruby-on-rails ruby ruby-on-rails-3 rails-migrations

class User < ActiveRecord::Base

has_many :comments

end


class Comment < ActiveRecord::Base

belongs_to :user

end

然后我跑了:rake db:migrate。我的Comment表中没有“user_id”字段/列。我也尝试过:rake db:drop,rake db:create和rake db:migrate。我可能错过了一步,有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您必须定义迁移。

创建评论模型时
rails generate model comment

rails还会在your_appication_root / db / migrate /.

中生成迁移文件
class CreateComments < ActiveRecord::Migration
  def change
    create_table :comments do |t|
       t.references :user
       t.text, :content
       t.timestamps
    end
  end
end

重要的一行是

t.references :user

或者您可以通过

直接定义它
t.integer :user_id
#but this do not add the db index

答案 1 :(得分:2)

您必须将这些添加到迁移中。

您可以在新的迁移中定义是否这样

add_column :comments, :user_id, :int

或更改您的迁移并使用帮助

create_table :comments do |t|
  ...
  t.references :user
end