ユーザーが私のサイトにサインアップすると、自動的にサインアップ ウィザードが表示されます (WickedWizard gem を使用)。彼らが入力した情報は、User モデルに属しているFinancesモデルを作成します。Userモデルにはhas_one Finance があります。
現在、ユーザーが最初の財務フォームを送信すると、ページは更新されずに更新されます。ログを見ると、次のように表示されます。
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = 2 ORDER BY "users"."id" ASC LIMIT 1
Finance Load (0.1ms) SELECT "finances".* FROM "finances" WHERE "finances"."user_id" = ? ORDER BY "finances"."id" ASC LIMIT 1 [["user_id", 2]]
(0.1ms) begin transaction
(0.1ms) rollback transaction
(0.0ms) begin transaction
(0.1ms) rollback transaction
Financesサインアップ ウィザード コントローラーは次のとおりです。
def show
if @finance.nil?
@finance = current_user.build_finance
else
@finance = Finance.find_by_user_id current_user[:id]
end
render_wizard
end
def update
@finance = current_user.build_finance
@finance.update_attributes(finance_params)
render_wizard @finance
end
また、ユーザーがウィザードをもう一度実行して、関連付けられている財務モデルからデータを表示できるようにする必要があるというユース ケースも考慮したいと思います。これが、if @finance.nil? ショーでチェックが必要でした。
編集:
現在、Finance モデルが作成されていますが、ユーザーに関連付けられていません。