[英]Allowing a nested attribute for a User with Devise in Rails 4
我正在從Rails 3.2升級到4.0,並且正在為我的User
模型使用Devise。 以前,我的User
模型中具有attr_accessible
屬性:
attr_accessible :username, :first_name, :last_name, :email, :password, :password_confirmation, :remember_me
現在,根據有關強參數的Devise文檔 ,我必須在我的application_controller.rb
中的before_filter
方法中執行以下操作:
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :first_name, :last_name, :email, :password, :password_confirmation, :remember_me) }
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :first_name, :last_name, :email, :password, :password_confirmation, :remember_me, :current_password) }
看起來不錯,但是我的User
模型中也有一個accepts_nested_attributes_for
:
accepts_nested_attributes_for :staff, reject_if: :new_record?
如何在我的devise_parameter_sanitizer.for(:account_update)
呢? 我不清楚。
更新 :我嘗試了以下操作:
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :first_name, :last_name, :email, :password, :password_confirmation, :remember_me, :current_password, staff_attributes: [:notification_email]) }
具體地講,我添加staff_attributes: [:notification_email]
作為參數傳遞給該permit
方法。 當我僅保存用戶編輯表單而不進行任何更改時,發生了3個主要問題:
validates :notification_email, uniqueness: true, allow_nil: true
在Staff
模型中) Staff
模型中具有validates_presence_of :project_id
) user
關聯的staff
模型,但所有屬性均設置為nil
但notification_email
除外。 其中包括user_id
字段,因此staff
對象不再連接到user
。 這些是嵌套屬性,因此您需要通過以下方式添加它們:
devise_parameter_sanitizer.for(:sign_up) { |u|
u.permit(:username, :staff_attributes => [:name, :position, :etc])
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.