ruby-on-rails rails开发 - 在Rails 4中添加参考列迁移




rails教程 view教程 (5)

做同样事情的另一种语法是:

rails g migration AddUserToUpload user:belongs_to

用户有许多上传。 我想在引用useruploads表中添加一列。 迁移应该是什么样子?

这是我的。 我不确定是否应该使用(1) :user_id, :int或(2) :user, :references 。 我甚至不确定(2)是否有效。 只是试图做到这一点“铁轨”的方式。

class AddUserToUploads < ActiveRecord::Migration
  def change
    add_column :uploads, :user_id, :integer
  end
end

Rails 3迁移:添加引用列?


Rails 5

您仍然可以使用此命令来创建迁移:

rails g migration AddUserToUploads user:references

迁移看起来与以前有所不同,但仍然有效:

class AddUserToUploads < ActiveRecord::Migration[5.0]
  def change
    add_reference :uploads, :user, foreign_key: true
  end
end

请注意,它是:user ,而不是:user_id


如果您喜欢使用down方法的另一种替代方法,请尝试以下操作:

  def up
    change_table :uploads do |t|
      t.references :user, index: true
    end
  end

  def down
    change_table :uploads do |t|
      t.remove_references :user, index: true
    end
  end

[使用Rails 5]

生成迁移:

rails generate migration add_user_reference_to_uploads user:references

这将创建迁移文件:

class AddUserReferenceToUploads < ActiveRecord::Migration[5.1]
  def change
    add_reference :uploads, :user, foreign_key: true
  end
end

现在,如果您观察模式文件,您会看到上传表格包含一个新字段。 类似于: t.bigint "user_id"t.integer "user_id"

迁移数据库:

rails db:migrate

生成一个迁移来删除一个列,以便如果它被修改( rake db:migrate ),它应该删除该列 。 如果此迁移回滚( rake db:rollback ),它应该添加列

语法:

remove_column:table_name,:column_name

删除列但未能在回滚时添加列。

例:

remove_column :users, :last_name

请注意复数表名称:用户

语法:

remove_column:table_name,:column_name,:type

删除列,如果迁移回滚,还会添加列

例:

remove_column :users, :last_name, :string

快乐的编码!





ruby-on-rails ruby-on-rails-4 rails-activerecord rails-migrations