フォーム内容とカラムの型が違う場合1度 attr_accessor で付与したフィールドでフォームとやりとりして
モデル内で値をカラムにセットする必要があると思うのですがいまいちその一般的なやり方がわかりません
attr_accessor の使い方がまだよくわかっていなくて
データベースに保存されないだけで ruby 上ではカラムと同じように扱えるフィールドという認識で
モデルの中に勝手に値がセットされるんだと思ってたのですが
f.checkbox :gender_form, {multiple:true}, 'male', nil f.checkbox :gender_form, {multiple:true}, 'female', nil
のようなフォームから params => user => gender_form => {'male', 'female'} のような配列パラメーターがとんできて
コントローラーで
def create @user = User.new(user_params) @user.save end def user_params params.require(:user).permit(:gender_form) end
と全部モデルに渡すとモデル内で self.gender_form でアクセスできると思ったのですが
user.rb で
validates :gender_form, presence: true after_validation :set_columns, on: [ :create, :update ] private def set_columns gender = gender_form.join(',') end
とかいても
undefined method `join' for nil:NilClass
となって gender_form の値を取得できません
コントローラーでは当然拾えるので
@user = User.new(user_params) @user.gender = user_params.gender_form.join(',') @user.save
という感じでフォームとカラムの差異の吸収は
コントローラー内でやるべきなのでしょうか

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/03/01 10:50
2019/03/01 12:44
退会済みユーザー
2019/03/01 16:54