加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 手动更新模型后更新db / migrate?

发布时间:2020-12-17 04:34:38 所属栏目:百科 来源:网络整理
导读:例如,我有这个模型: class Product ActiveRecord::Base attr_accessible :name,:orderend 然后,当我做rake db:migrate时,它创建了这个db / migrate / 20120825132038_create_products.rb: class CreateProducts ActiveRecord::Migration def change creat
例如,我有这个模型:
class Product < ActiveRecord::Base
  attr_accessible :name,:order
end

然后,当我做rake db:migrate时,它创建了这个db / migrate / 20120825132038_create_products.rb:

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.integer :order
      t.string :name

      t.timestamps
    end
  end
end

但这一切都发生了因为我使用了rails generate产品顺序:整数名称:字符串

现在我转到产品型号并手动更改为:

class Product < ActiveRecord::Base
  attr_accessible :name,:order,:category_id

  validates :name,uniqueness: true
  belongs_to :category
end

如何使用更新自动更新db / migrate / 20120825132038_create_products.rb?

解决方法

运行rake db:migrate时,它没有创建db / migrate / 20120825132038_create_products.rb.您运行时创建了该迁移文件
rails generate Product order:integer name:string

attr_accessible与迁移数据库无关.

我强烈建议您阅读Migrations上的Rails指南,以及讨论attr_accessible的Mass Assignment部分.

要生成一个新的迁移文件(因为您的问题中提到的那个已经由您提到的上一个rake db:migrate命令处理),运行

rails g migration AddCategoryIdToProduct category_id:integer

这应该生成一个包含内容的新迁移

class AddCategoryIdToProduct < ActiveRecord::Migration
  def change
    add_column :products,:category_id,:integer
  end
end

现在再次运行rake db:migrate将处理此迁移文件,将新的category_id整数列添加到products表中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读