2012-07-13 105 views
6

如何通過終端使用ActiveRecord將列添加到表中。我試圖使用add_column方法,但它不工作。請有任何想法嗎?通過終端添加列

+0

你使用了哪個數據庫? – cdesrosiers 2012-07-13 20:06:40

+1

最好寫一個移植 – 2012-07-13 20:07:42

+0

Im使用鐵路的默認值,如果我沒有弄錯,是SQLite ......但是,它應該不重要,因爲我通過使用ActiveRecord抽象SQL代碼。我生成了一個賬戶模型,並忘記插入一個電子郵件字段名,並希望添加它... – Sweebo 2012-07-13 20:10:27

回答

8

如果你正在與一個團隊合作,那麼寫一個遷移和一個必須是最好的。當你做數據庫更改時,每個開發人員的環境也必須更新。否則,你會遇到一些瘋狂的開發人員。

rails generate migration AddPartNumberToProducts part_number:string 

會產生

class AddPartNumberToProducts < ActiveRecord::Migration 
    def change 
    add_column :products, :part_number, :string 
    end 
end 

然後運行遷移

rake db:migrate 

http://guides.rubyonrails.org/migrations.html

編輯:

爲Rails控制檯命令行檢查@ tadman的答案,或者用什麼Bengala提出像

ActiveRecord::Migration.add_column :products, :part_number, :string 
+0

Thx尋求幫助。關於產品型號,我認爲您必須添加訪問器以手動滿足新列。 Rails不會自動編輯模型? – Sweebo 2012-07-15 22:47:08

+0

@Sweebo,正確 – 2012-07-16 01:18:56

+0

你沒有回答這個問題 – Bengala 2016-05-24 17:05:54

3

如果你只是在黑客入侵,使用某種類型的SQLite客戶端比通過Rails DB層操縱數據庫通常更容易。

如果您正在爲一個項目執行此操作,請創建一個適當的遷移文件並運行它。

如果您決定執行此操作,則可通過驅動程序對象ActiveRecord::Base.connection獲取add_column方法。

8

您可以直接在鐵軌控制檯rails cActiveRecord::Migration

運行遷移你的目的下一個命令會做什麼你請問:

> ActiveRecord::Migration.add_column :table_name, :field_name, :field_type 
+0

謝謝你。當然,最好幾乎每時每刻都要寫一次遷移。但是_sometimes_,你確切地知道你在做什麼,只是想直接運行一個更改:) – FeifanZ 2016-12-04 20:55:35

+0

是的,但他沒有問如何做一個遷移,他問如何通過終端添加一列。我認爲這是合適的答案。 – Bengala 2017-02-22 19:01:22