30

我已经使用创建了一个脚手架

rails generate scaffold myOdb2 columna:integer, columnB:string

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

顺便说一句:问题很笼统,但可以通过 Rubymine 更快地完成吗?

4

4 回答 4

77

您必须生成迁移:

rails g migration add_columnc_to_myodb2s columnc:string

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

add_column :myodb2s, :columnc, :string

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

于 2012-04-27T14:54:14.153 回答
34
  • 如果您刚刚生成它并意识到您的错误,您可以使用:

    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

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

于 2012-04-27T16:12:46.813 回答
5

没有人提到更新强参数:

因此,假设我有一个名为的现有脚手架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 具有所谓的强参数,以防止黑客传递任意列字段值。长话短说,使用新字段名称更新方法,否则您将看不到新字段..它们不会被传递到任何地方...不受信任的值;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
于 2015-10-21T17:53:43.810 回答
1

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

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

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

又名MVC

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

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

于 2014-04-29T12:44:33.463 回答