2

フィールド「a、b、c、d、e、f、g」を持つ「テンプレート」というモデルがあり、一意のフィールドだけでなく「テンプレート」と同じフィールドを持つ「レポート」モデルがある場合:「青」 ,赤,金,緑,a,b,c,d,e,f,g')。

たとえば、新しいレポートのフォームでは、テンプレートを選択するためのドロップ リストがあり、そのリストの値がテンプレート ID になります。そのため、レポートの作成アクションで、新しいレポート オブジェクトを作成し、選択したテンプレートを ID で見つけます。

@report = Report.new(params[:report])
@template = find(params[:report][:template_id])

この時点で (@report オブジェクトには @template オブジェクトが持つすべてのフィールドが含まれていることを考慮して)、@template の値を @report オブジェクトにコピーする適切な方法はありますか?

ありがとう!レール 2.3.5 / ルビー 1.8.7

4

1 に答える 1

3

最も簡単な方法:

@report = Report.new(params[:report])
@template = find(params[:report][:template_id])
@template.attributes = @report.attributes #this copies fields from report to template
于 2012-06-10T04:24:18.507 に答える