I've menambahkan Merancang untuk saya Rails 4 aplikasi, dan berhasil menambahkan nama pengguna dll. saya Pengguna model. Selain itu, saya'm mampu menyimpan bidang tersebut menggunakan cara malas&perdagangan;, yaitu
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) }
end
end
Namun, saya mencoba
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) }
devise_parameter_sanitizer.for(:edit) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) }
end
tapi itu tidak't bekerja cukup seperti yang diharapkan (username tidak disimpan ketika dipanggil oleh mengedit action). Apakah ada sesuatu yang lain yang perlu saya lakukan dalam rangka untuk mendapatkan itu untuk bekerja? Terima kasih!!!
Sekali lagi, itu adalah masalah membaca manual ...
Kata ajaib :account_update
dan dengan demikian bekerja menjadi versi
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname, :nickname) }
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:email, :password, :password_confirmation, :current_password, :firstname, :middlename, :lastname, :nickname) }
end
Perhatikan bahwa jika anda're dalam bisnis masuk menggunakan parameter non-standar, kata'kembali mencari :sign_in
(seperti yang diharapkan).
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :email])
devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name, :phone, :email, bank_attributes: [:bank_name, :bank_account]])
end
end
The .untuk
metode usang, sekarang kita menggunakan .izin
Pertama arg adalah nama tindakan. :sign_up
adalah untuk menciptakan yang baru Merancang sumber daya (seperti pengguna), dan :account_update
adalah untuk mengedit/mengupdate sumber daya.
Kedua arg, :tombol
berisi array parameter yang anda izinkan.
Jika anda ingin nested_attributes
, ada contoh di :account_update
, anda menempatkan terpisah array dengan key menjadi <objek>_attributes
.
@pendamai yang benar tentang kata ajaib ini :account_update tapi di sini's link ke dokumentasi ia menyinggung http://rubydoc.info/github/plataformatec/devise/ Pencarian untuk 'devise_parameter_sanitizer' dan'll lihat berikut ini:
Hanya ada tiga tindakan dalam Merancang yang memungkinkan setiap set parameter yang akan diturunkan untuk model, oleh karena itu memerlukan sanitasi. Nama-nama mereka dan diizinkan parameter secara default adalah:
sign_in (Devise::SessionsController#new) - Permits only the authentication keys (like email)
sign_up (Devise::RegistrationsController#create) - Permits authentication keys plus password and password_confirmation
account_update (Devise::RegistrationsController#update) - Permits authentication keys plus password, password_confirmation and current_password
def configure_permitted_parameters
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:email, :password, :password_confirmation, :current_password, :firstname, :middlename, :lastname, :nickname) }
end