0
我有一個user_controller更新方法。根據用戶來自何處,我有時必須向用戶傳遞一個額外的param(:tournament)編輯表單,它實際上不會更新用戶實例,但可以幫助我在用戶結束時將用戶重定向到正確的頁面更新操作。如何從instance_params中更新沒有參數的實例?
這裏是我的更新方法:
def update
authorize @user
if @user.subscriptions.exists? && [email protected]? && user_params[:birthdate].present?
flash[:alert] = "Vous ne pouvez plus modifier votre date de naissance après vous etre inscrit à une compétition. Merci de contacter l'administrateur du site"
redirect_to user_path(current_user)
elsif @user.update(user_params)
if @user.judge? && @user.profile_complete? && [email protected]
UserMailer.judge_waiting_for_confirmation(@user).deliver
redirect_to user_path(current_user)
else
redirect_to user_path(current_user)
end
else
render 'edit'
end
end
問題是在ELSIF當我嘗試更新我的user_params用戶,它會引發我一個錯誤unknown attribute 'tournament' for User.
我的用戶PARAMS看起來像這樣:
def user_params
params.require(:user).permit(
:extradoc,
:address,
:birthdate,
:certifmedpicture,
:club,
:email,
:first_name,
:genre,
:judge_number,
:last_name,
:licence_number,
:licencepicture,
:login_aei,
:name,
:password_aei,
:picture,
:ranking,
:telephone,
:sms_forfait,
:sms_quantity,
:tournament
)
end
我該如何更新我的用戶而不用:錦標賽參數,同時允許我使用它將我的用戶重定向到正確的位置在行動結束時?
當我刪除:比賽從user_params我仍然發現不允許的參數:錦標賽 –
@DavidGeismar不會從你的params中刪除它也是一個選項。你仍然可以將attr_accessor放在你的用戶模型上,所以你的用戶實例知道這個屬性。 –