向Rails模型添加新字段

我已经创建了一个scafold使用

rails generate scaffold myOdb2 columna:integer, columnB:string 

现在我想添加columnc:string 。 我该怎么办?

顺便说一句:问题是一般性的,但可以通过Rubymine更快地完成吗?

  • 如果您刚刚生成它并意识到您的错误,您可以使用:

    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

  • 如果您对控制器或视图进行了更改,则只需运行迁移即可更新数据库和模型,然后手动将新列添加到每个视图中。

您必须生成迁移:

 rails g migration add_columnc_to_myodb2s columnc:string 

它应该包含一行向表中添加列。

 add_column :myodb2s, :columnc, :string 

这会将列添加到您的db表中,当然也会添加到您的模型中,但不会添加到任何视图中。 您需要手动添加它。 据我所知。

没有人提到更新强参数:

所以,让我们说我有一个名为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 

我需要补充一下:

 
<%= f.label :current_record_count %>
<%= f.number_field :current_record_count%>
<%= f.label :current_record_count %>
<%= f.number_field :previouse_record_count%>
<%= f.label :term_count %>
<%= f.number_field :terminations_count %>

=>

 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 

脚手架 ,快速简便,一次性生成数据模型和Web界面。 但是,rails generate scaffold只是开始使用模型的一种方式,它在一开始就有帮助。

通常,您首先必须扩展数据模型。 使用rails generate migrationrake db:migration简化了此任务。 请注意,您可能更喜欢使用rake with bundle exec来确保在Gemfile中使用rake的版本。

此后,您可能希望根据Web应用程序的要求直接更新(也可能创建新的)控制器和视图。

又名MVC

例如,在全新的脚手架模型中,您可能需要更新索引并显示视图(请参阅app/views文件夹)和myOdb2控制器(请参阅app/controllers文件夹)

不要忘记阅读有关迁移的信息http://guides.rubyonrails.org/migrations.html