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 

更新後のdatabseスクリプト

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 

古いdevelopment.sqlite3と古いスキーマをschame.rbにドロップした後。
いくつかの列を追加したが、モデルにこれらの列がないとします。

しかし、私のモデルはまだです

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 に答える