場景:我們已經有了一個文檔模型,我們要添加添加多個列在一個遷移
- 公共
- 私人
列或多列使用一次遷移。
從我迄今爲止搜索和閱讀的內容中,您只需編輯遷移文件即可。如果已經應用遷移,請回滾並再次遷移。
- 這是常見的最佳實踐,還是有更好的方法?
- 如果這樣做的話,那麼遷移的適當命名是什麼?
場景:我們已經有了一個文檔模型,我們要添加添加多個列在一個遷移
列或多列使用一次遷移。
從我迄今爲止搜索和閱讀的內容中,您只需編輯遷移文件即可。如果已經應用遷移,請回滾並再次遷移。
只有當該遷移是本地遷移並且尚未推送到任何存儲庫時,回滾遷移並重新編輯它纔是安全的。編輯其他人應用的遷移可能會導致問題。
將列添加到現有的表最安全的方式就是創建一個新的遷移:如果您使用add_[column_names]_to_[model]
命名約定
rails g migration add_public_and_private_to_document public:string private:string
,軌道將制定出相應的表,創建一個要遷移。
有一個在這裏閱讀更多的信息:http://guides.rubyonrails.org/migrations.html
可以發出這樣的命令:
軌摹遷移文檔市民:字符串私營:字符串
@Cam方式是分辯..除了在運行遷移之後需要更新兩件事情。
因此,讓我們說我有一個現有的腳手架叫myapp
,我想添加更多的領域,該腳手架。三件事情要完成。
的字段被添加有:
=>
1)rails g migration add_term_count_and_current_record_count_and_previous_record_count_to_myapp term_count:integer , current_record_count:integer , previous_record_count:integer
=>
2) Update views, example updating _form.html.rb
我需要添加:
<div class="field">
<%= f.label :current_record_count %><br>
<%= f.number_field :current_record_count%>
</div>
<div class="field">
<%= f.label :current_record_count %><br>
<%= f.number_field :previouse_record_count%>
</div>
<div class="field">
<%= f.label :term_count %><br>
<%= f.number_field :terminations_count %>
</div>
=>
3) Update Controller :
新版本的rails具有所謂的強參數,以防止黑客傳遞任意列字段值。長話短說,用新的字段名稱更新方法,否則你將看不到新的字段。
# Never trust parameters from the scary internet, only allow the white list through.
def vendor_file_params
params.require(:vendor_file).permit(:name, :run_date, :term_count ,
:current_record_count , :previous_record_count ,:comments)
end
end
這些都是非常可怕的變量名稱,因爲它們通常是關鍵字,所以幾乎可以在任何編程語言中使用。 – 2012-10-24 17:59:10