在Rails中进行has_many关联迁移

the*_*ter 7 activerecord ruby-on-rails associations has-many ruby-on-rails-4

我正在开发一个Rails项目(Rails版本4.2.3).我创建了一个UserTask模型,但在创建过程中没有包含它们之间的任何关联.现在我希望一个user 人有tasks一个task属于一个人user.

通过rails g migration AddUserToTask user:belongs_to这个线程 我能插入任务表的外键USER_ID.但是如何添加has_many迁移呢?我更新了User模型:

class User < ActiveRecord::Base
  has_many :customers
end 
Run Code Online (Sandbox Code Playgroud)

但我不知道如何编写迁移.到目前为止我写了这个:

class addTasksToUser < ActiveRecords::Migration
  def change
    update_table :users do |t|
      t.has_many :tasks
    end 
    add_index :users, taks_id
  end
end 
Run Code Online (Sandbox Code Playgroud)

但是rake db:migrate没有采取任何行动.这是建立has_many关系的正确方法吗?

And*_*eko 21

在模型中设置关联:

class User < ActiveRecord::Base
  has_many :tasks
end

class Task < ActiveRecord::Base
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

删除您显示的迁移文件.

添加对tasks表的引用(假设您已经有tasks表):

rails g migration add_references_to_tasks user:references
Run Code Online (Sandbox Code Playgroud)

迁移数据库:

rake db:migrate
Run Code Online (Sandbox Code Playgroud)

如果您还没有tasks表,请创建一个:

rails g migration create_tasks name due_date:datetime user:references # add any columns here
Run Code Online (Sandbox Code Playgroud)

迁移数据库:

rake db:migrate
Run Code Online (Sandbox Code Playgroud)

从现在开始,您的任务将具有user_id属性.