de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 conciliator
conciliator
Question

Cara menentukan devise_parameter_sanitizer untuk mengedit tindakan?

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!!!

50 2013-11-05T14:39:07+00:00 4
 conciliator
conciliator
Pertanyaan edit 5 November 2013 в 2:46
Pemrograman
devise
strong-parameters
ruby-on-rails-4
Solution / Answer
 conciliator
conciliator
5 November 2013 в 4:05
2013-11-05T16:05:16+00:00
Lebih
Sumber
Sunting
#22719930

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).

 conciliator
conciliator
Jawaban edit 12 Januari 2014 в 7:23
85
0
 Mirror318
Mirror318
12 Juni 2016 в 10:54
2016-06-12T22:54:51+00:00
Lebih
Sumber
Sunting
#22719933

Untuk Merancang 4.1+

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.

 Mirror318
Mirror318
Jawaban edit 6 Juli 2016 в 10:33
55
0
 techbrownbags
techbrownbags
18 April 2014 в 5:20
2014-04-18T17:20:25+00:00
Lebih
Sumber
Sunting
#22719931

@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
15
0
 lypef
lypef
18 Januari 2015 в 7:10
2015-01-18T19:10:59+00:00
Lebih
Sumber
Sunting
#22719932
def configure_permitted_parameters
  devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:email,   :password, :password_confirmation, :current_password, :firstname, :middlename, :lastname, :nickname) }
end
Kyle Decot
Kyle Decot
Jawaban edit 25 Maret 2016 в 5:08
6
0
Related communities 1
Ruby Indonesia
Ruby Indonesia
1 769 pengguna
Ruby adalah bahasa pemrograman dinamis berbasis skrip yang berorientasi objek. Tujuan dari ruby adalah menggabungkan kelebihan dari semua bahasa-bahasa pemrograman skrip yang ada di dunia.
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 7 jam yang lalu
2
Akshit Mehta
Terdaftar 2 hari yang lalu
3
me you
Terdaftar 6 hari yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi