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

  • scaffold で作成されたモデルにいくつかの変更を加えて保持したいが、コントローラーとビューを破棄してもかまわない場合:

    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

強力なパラメータの更新について誰も言及していません:

という名前の既存の scaffold がmyappあり、その scaffold にさらにフィールドを追加したいとします。やるべきことは3つ。

追加するフィールドは次のとおりです。

=>

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 : 

レールの新しいバージョンには、ハッカーが任意の列フィールド値を渡すのを防ぐための強力なパラメーターと呼ばれるものがあります。簡単に言えば、新しいフィールド名でメソッドを更新します。そうしないと、新しいフィールドが表示されません..それらはどこにも渡されません...信頼できない値; 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 に答える