を使用してすでに足場を作成しました
rails generate scaffold myOdb2 columna:integer, columnB:string
今私は追加したいcolumnc:string
。私は何をすべきか?
ところで: 質問は一般的ですが、Rubymine を使用してより迅速に行うことはできますか?
を使用してすでに足場を作成しました
rails generate scaffold myOdb2 columna:integer, columnB:string
今私は追加したいcolumnc:string
。私は何をすべきか?
ところで: 質問は一般的ですが、Rubymine を使用してより迅速に行うことはできますか?
移行を生成する必要があります。
rails g migration add_columnc_to_myodb2s columnc:string
テーブルに列を追加する行が含まれている必要があります。
add_column :myodb2s, :columnc, :string
これにより、列が yourdb テーブルに追加され、もちろんモデルにも追加されますが、どのビューにも追加されません。手動で追加する必要があります。私が知る限り。
生成したばかりで間違いに気付いた場合は、次を使用できます。
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
コントローラーまたはビューに変更を加えた場合は、移行を実行してデータベースとモデルを更新し、新しい列を各ビューに手動で追加するだけです。
強力なパラメータの更新について誰も言及していません:
という名前の既存の 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