0

我在 db/migrate 下更新了迁移脚本,我做了一个

rake db:migrate

更新前的数据库脚本

class CreateStudents < ActiveRecord::Migration
  def change
    create_table :students do |t|
      t.string :firstname
      t.string :lastname      
      t.string :account
      t.timestamps
    end
  end
end 

更新后的数据库脚本

class CreateStudents < ActiveRecord::Migration
  def change
    create_table :students do |t|
      t.string :firstname
      t.string :lastname      
      t.string :account
      t.string :address      
      t.string :city
      t.string :state
      t.string :postcode                        
      t.string :homephone
      t.timestamps
    end
  end
end 

在我删除了 schame.rb 中的旧 development.sqlite3 和旧模式之后。
假设我添加了几列,但在模型中这些列缺失。

但我的模型仍然是

class Student < ActiveRecord::Base
  attr_accessible :firstname,:lastname,:account,
end

有没有一种简单的方法可以将新迁移脚本中的更改带到模型中?

4

3 回答 3

2

如果要允许对其他属性进行批量分配,只需将键添加到 attr_accessible

class Student < ActiveRecord::Base
  attr_accessible :firstname,:lastname,:account,:address, :city, :state, :postcode, :homephone
end

但是,您的模型仍然具有这些属性(或您所称的列)。如果不先使它们 attr_accessible,您就无法进行批量分配(例如 create 或 update_attributes)。

于 2013-02-08T01:30:49.830 回答
1

看起来也许你做了rails generate migration这并不意味着影响你的模型。我相信在您创建模型之后,之后的一切都必须手动完成。

如果你真的想同时改变你的数据库和模型,你最好的选择可能是删除你的迁移和模型并做一个rails generate scaffold文档)从头开始创建你的整个脚手架。

于 2013-02-08T01:31:27.640 回答
0

在模型中手动添加新列没有问题。

于 2013-02-08T01:30:37.753 回答