前提・実現したいこと
複数ステップを利用してユーザー情報を新規登録したいです。
Railsを用いてユーザ登録機能を作っています。
仮想的な属性(Virtual Attributes)がある複数ステップの登録フォームを採用し、実施しています。
1画面目に「姓」「名」をそれぞれ分けて入力するテキストフォームがあるのですが、
DBでは1つのカラム「username」などとマージする処理をModelで定義してます。
1ステップのみであれば問題なく登録まで完了できたのですが、
複数ステップに分けた場合、2画面目に「姓」「名」の情報を引き継ぐことがうまくできません。
Modelの方でVirtual Attributesを使用して「姓」「名」を入力できるように設定しています。
そのVirtual Attributesをmargeさせることで「名前」としてDBに格納する設計にしてます。
発生している問題・エラーメッセージ
wrong number of arguments (given 2, expected 1)
2画面目に「姓」「名」の情報が引き継がれなくnilがDBに格納されてしまう。
該当のソースコード
Modelソース
rails
1 def firstname 2 @firstname 3 end 4 5 def lastname 6 @lastname 7 end 8 9 #DBカラムはusernameなので@firstname, @lastnameを結合する 10 def set_username 11 unless @firstname == nil 12 self.username = [@lastname, @firstname].join(" ") 13 end 14 end
Controllerソース
@user = User.new(username: params[:lastname, :firstname].join(" "), email: params[:email])
試したこと
Sessionにて引数を管理しましたが、DBに登録するタイミングで該当するパラメーターがなくエラーとなりました。
またストロングパラメーターを使用せずに直接インスタンス変数に代入しようとすると「wrong number of arguments (given 2, expected 1)」と表示されてマージできません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー