テーブルのない Ruby オブジェクトを使用できます。各 show ステップの前にそれをセッションにシリアル化し、各更新ステップの前にセッションからロードします (新しいパラメーターをマージします)。
before_filter :initialize_wizard, on: [:show, :update]
...
def initialize_wizard
@wizard = YourWizardTempModel.new
@wizard.update_attributes(session['wizard']) if session['wizard'].present?
@wizard.update_attributes(params['wizard']) if params['wizard'].present?
session['wizard'] = @wizard.as_json
end
次に、次のように country_id に基づいて人々の選択を組み立てる条件付きの before_filter を作成できます。
before_filter :populate_people, if: "step == 'select_people'"
...
def populate_people
People.find_by_country_id(@wizard.country_id)
end