我是Ruby on Rails的新手,我只是試圖向現有模型添加新屬性。我有一個新的布爾屬性添加到我的類繼承自:一步如何向Ruby中的模型(ActiveRecord)添加新屬性
ActiveRecord::Base
會有人解釋,一步,怎麼辦呢?
我是Ruby on Rails的新手,我只是試圖向現有模型添加新屬性。我有一個新的布爾屬性添加到我的類繼承自:一步如何向Ruby中的模型(ActiveRecord)添加新屬性
ActiveRecord::Base
會有人解釋,一步,怎麼辦呢?
您需要使用遷移才能將字段添加到數據庫。創建這些文件的最簡單方法是與終端命令,但也可以手動創建:
http://edgeguides.rubyonrails.org/active_record_migrations.html
每次添加一個遷移,你需要將它應用到你的數據庫,這是與完成:
rake db:migrate
當您運行此,軌道經過已應用了所有遷移文件的檢查,然後通過休息才能運行。這意味着您可以回滾已經搞砸的遷移,並且可以根據需要在遷移的不同「階段」查看數據庫。
對於您的情況,我們希望在模型「書籍」中添加一個「發佈」字段。我們將從終端運行:
rails g migration addPublishedToBook published:boolean
您可以從上方看到結構。如果我們想要一個叫姓字符串添加到我們的模型的用戶:您從終端這些任務後
rails g migration addFirstnameToUser firstname:string
,每一個都會創建一個新的遷移文件。準備就緒後,運行rake db:migrate,新的更改將應用於您的數據庫。
您可以生成一個新的遷移指定它所對應的屬性和模型:
$ rails generate migration add_new_attribute_to_model new_attribute:type
這會產生這樣一個遷移:
class AddNewAttributeToModel < ActiveRecord::Migration[RailsVersion]
def change
add_column :model, :new_attribute, :boolean # boolean type attribute
end
end
然後,你可以堅持的變化:
$ rails db:migrate
只有您需要添加新的遷移文件才能對數據庫進行更改。
rails g migration AddFieldToMyTable my_field:string
現在,你需要堅持的變化:
bundle exec rake db:migrate
如果你想將字段添加到窗體,不要忘了添加在控制器接受屬性的新領域:
def model_params
params.require(:model).permit(...., :my_field)
end
簡單的解釋說是過程,希望它對你有幫助! (谷歌traductor愛:[)
你問如何添加一個**列**到**數據庫**?閱讀[數據庫遷移](http://edgeguides.rubyonrails.org/active_record_migrations.html)。特別是,你可以使用'add_column'或'change_table(:table_name){...}' –
標準模型屬性是根據表中的列名動態定義的。通過添加一個表格列,您可以訪問模型上的getter/setter方法。 –