我已经使用
创建了一个脚手架rails generate scaffold myOdb2 columna:integer, columnB:string
现在我要添加columnc:string
。我该怎么办?
答案 0 :(得分:67)
您必须生成迁移:
rails g migration add_columnc_to_myodb2s columnc:string
它应该包含一行向表中添加列。
add_column :myodb2s, :columnc, :string
这会将列添加到您的db表中,当然也会添加到您的模型中,但不会添加到任何视图中。您需要手动添加它。据我所知。
答案 1 :(得分:31)
如果你刚刚生成它并意识到你的错误,你可以使用:
rails destroy scaffold myOdb2
然后重新生成脚手架:
rails generate scaffold myOdb2 columna:integer, columnB:string, columnc:string
如果您对希望保留的脚手架创建的模型进行了一些更改,但您不介意销毁控制器和视图:
rails destroy scaffold_controller myOdb2
然后创建一个迁移以添加列:
rails generate migration add_columnc_to_myodb2s columnc:string
然后重新生成控制器和视图:
rails generate scaffold_controller myOdb2 columna:integer, columnB:string, columnc:string
如果您对控制器或视图进行了更改,则只需运行迁移即可更新数据库和模型,然后手动将新列添加到每个视图中。
答案 2 :(得分:4)
没有人提到更新强参数:
所以,让我们说我有一个名为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>
=&GT;
3) Update Controller :
新版本的rails具有所谓的强参数,可防止黑客传递任意列字段值。长话短说,用新的字段名称更新方法,否则你将看不到新字段..它们不会被传递到任何地方......不可信的值; o)
# 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
答案 3 :(得分:1)
脚手架,快速简便,一次性生成数据模型和Web界面。但是,rails generate scaffold
只是开始使用模型的一种方式,它只是在开始时才有用。
通常,您首先必须扩展数据模型。使用rails generate migration
和rake db:migration
可以简化此任务。请注意,您可能更愿意使用rake bundle exec
来确保在Gemfile中使用rake版本。
此后,您可能希望根据Web应用程序的要求直接更新(也可能创建新的)控制器和视图。
又名 MVC
例如,在全新的 scaffolded 模型中,您可能希望更新索引并显示视图(请参阅app/views
文件夹)和myOdb2控制器(请参阅app/controllers
文件夹)