Chciałbym wiedzieć, jak zintegrować zarówno z tym kamieniem szlachetnym (opracowanie + Silne parametry), ponieważ silne params prawdopodobnie zostanie dodany do rdzenia szyn w 4,0opracować i Silne Parametry
każda pomoc jest mile widziany dzięki
Chciałbym wiedzieć, jak zintegrować zarówno z tym kamieniem szlachetnym (opracowanie + Silne parametry), ponieważ silne params prawdopodobnie zostanie dodany do rdzenia szyn w 4,0opracować i Silne Parametry
każda pomoc jest mile widziany dzięki
Aktualizacja opracować 4.x
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
devise_parameter_sanitizer.permit(:sign_in, keys: [:username])
devise_parameter_sanitizer.permit(:account_update, keys: [:username])
end
end
Po dodaniu zarówno perełki, opracowanie będzie działać normalnie.
Aktualizacja: przy użyciu najnowszej wersji oprogramowania Devise 3.x, zgodnie z opisem podanym pod numerem devise#strong-parameters, klucz uwierzytelniający (zwykle pole wiadomości e-mail) oraz pola hasła są już dozwolone. Jeśli jednak w formularzu rejestracyjnym znajdują się dodatkowe pola, konieczne będzie powiadomienie programisty o dodatkowych polach, na które można zezwolić. Najprostszym sposobem na to jest z filtrem:
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :username
end
end
Aby opracować 2.x, jeśli używasz funkcji bezpieczeństwa wymagający wyraźnie białej listy skażone parametry w modelu użytkownika:
include ActiveModel::ForbiddenAttributesProtection
zmiany potrzebne znajduje się pod adresem https://gist.github.com/3350730, co powoduje przesłonięcie niektórych kontrolerów.
Łatwym sposobem jest dodanie prostego filtra przed zmianą w aplikacji ApplicationController. Jeśli masz różne role i/lub inne bardziej skomplikowany scenariusz istnieją inne opcje na poniższy link:
before_filter :configure_sanitized_params, if: :devise_controller?
def configure_sanitized_params
devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:firstname, :designation_id ,:middlename, :previous_experiance_year,:previous_experiance_month,:lastname, :email, :username, :password, :password_confirmation, :previous_experiance,:empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone,:deactivated_date,:image)}
devise_parameter_sanitizer.for(:account_update) {|u| u.permit(:remove_image,:firstname, :designation_id ,:middlename, :lastname, :email, :username, :empid, :dob, :timezone, :doj, :gender, :education, :comments, :locked, :deactivated, :reason, :phone, :deactivated_date,:image)}
end
Skopiuj i wklej ten kod do kontrolera aplikacji, również zamiast: imię, i inne pola, musisz dodać swoje pola.
tak, to jest nowy sposób na zrobienie tego. pytanie zostało zadane w dniu, w którym program nie wdrożył silnych parametrów w swoim kodzie. –
Następna odpowiedź jest lepsza, z mojego punktu widzenia, ponieważ jest przekazywana na Devise Public API – msa7
To dlatego, że moja odpowiedź pochodzi sprzed ponad roku. Zaktualizowałem odpowiedź na podstawie nowych rozwiązań. – ronalchn
to pytanie jest doskonałym przykładem tego, jak mały jest świat, odpowiedziałeś na moje pytanie z własnym gist = D –