よくわかっていないけどメモdeviseのsign_upでバリテーションで引っかかった後に再入力するときだけエラーがでる理由
コントローラ
def new
@target = Target.new
super
end
def create
super
target = @user.targets.build(target_params)
target.save!
end
変更
def new
super
resource.targets.build
end
def create
super
end
アソシエーションをコントローラで記述していたけど
deviseをあまりいじらないほうがいいかなということでコントローラではなくモデルでやることにした。
user.rb追記
accepts_nested_attributes_for :targets
アソシエーションするためこの記述を用意
アプリケーションコントローラ追記
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :avatar, targets_attributes: [:content, :point, :image, :image_cache, :user_id, :luck_id]])
end
カラムの追加
ビュー
<%= fields_for(resource.targets.first) do |target| %>
このように定義
resourceはuser.newと同じような役目をしている事を知ったので
このような記述にした
@targetにするとtargetが2つ準備されるみたい
targets-attributeでpostするとtargetが生成されるので
@tergetを使わないようにした。
よくわからないけどそうするとできた