2013-02-07 68 views
0

我有更新遷移腳本下DB /遷移和Ruby on Rails的:如何使修改數據庫模型

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劇本後,我做了一個

rake db:migrate 

數據庫腳本更新之前更新

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和舊的schema在schame.rb中。
說我添加了幾列,但在模型中這些列丟失。

但我的模式仍然是

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

有一個簡單的方法使我能在新的遷移腳本修改模型?

+1

你的意思是什麼樣的變化? – eeeeeean

+0

@eeeeeean說我添加了幾列,但在模型中這些列丟失 – icn

+0

給出的例子。你的問題含糊不清。 – Huy

回答

1

看起來你可能做了rails generate migration這不會影響你的模型。我相信在創建模型之後,所有事情都必須手動完成。

如果你真的想要同時改變你的數據庫和模型,你最好的辦法可能是刪除你的遷移和模型,並從頭開始創建你的整個腳手架(rails generate scaffold)(documentation)。

0

在模型中手動添加新列沒有問題。

2

如果要允許其他屬性的質量分配,你可以添加鍵attr_accessible

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

但是,你的模型仍然有那些屬性(或列如你給他們打電話)。你不能做一個大規模的任務(比如create或者update_attributes),而不是先讓它們attr_accessible。