2014-03-28 1 views
1

설명서를 읽었지만 구문/형식을 고수 할 수는 없습니다.레일 4.0의 강력한 매개 변수 간략한 구현 구현

나는 꽤 새로운 레일입니다. 내 모델에이 있습니다 :

attr_accessible :email, :username 

레일 4.0의 변경 사항 때문에 컨트롤러로 옮겨야합니다. ,

before_filter :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) << :username 
    end 

나에게 뭔가를이 더 의미처럼 : 내 컨트롤러에서이 그것이 올바른 것 넣으면

는 (이것은 내가 문서는 내가 올바르게 해석하지만 만약 확실하지 않습니다 말한다 생각입니다) 내가 할 수 있을까요? :

protected 
    def permitted_paramters 
    params.require(:username, :email).permit(:username, :email) 
    end 

의견을 보내 주셔서 감사합니다.

+0

이에서보세요 - http://stackoverflow.com/questions/11904105/devise-and -strong-parameters – cristian

+0

레일 4에서는'attr_accessible'을 쓸 필요가 없습니다.) –

+0

@RichPeck 그래서 컨트롤러를 완전히 닫고 아무것도하지 말아야합니까? 무슨 소리 야? – user3408293

답변

0

는 다른 곳에 당신이 고안에 이렇게 여기에서 할 수없는 당신의 컨트롤러에 같은 params.require을 더 나을 동안 이유는

    고안 당신이 (여기 permitted_parameters) 당신의 방법이라는 방법을 알 필요가
  • 당신은 당신이 고안의 devise_parameter_sanitizer을 사용하고 당신이에있는 경우에만 적용 할 수 있는지 확인해야합니다 왜 모든 컨트롤러

이러한 매개 변수를 필터링하지 않으려는. 두 번째 예에서 보조 노트로


, 상기 require 방법은 속성의 목록 만 그룹화 속성에서 이름을 안

params.require(:username, :email).permit(:username, :email) 

. 다른 컨트롤러에서 오히려 다음과 같아야합니다

params.require(:user).permit(:username, :email) 

이 다음 매개 변수를 허용합니다 : user[username]=Joe&user[email][email protected]

+0

문서의 제 해석이 옳았는데, 제 첫 번째 코드가 작동할까요, 아니면 어딘가에서 어떤 매개 변수를 대체해야할까요? 그 코드에서 사용자 이름이나 이메일을 말하는 곳이 없기 때문에 그것이 나에게 너무 직관적이지 않습니다. – user3408293

+0

예 첫 번째 코드는 작동해야하지만 사용자에게 가입시 '이메일'및 '비밀번호'보다 자세한 정보를 요구하는 경우에만 필요합니다. 사용자가'username'을 입력해야한다면, 이것을 추가해야합니다. – Sunny

+0

암호 확인 필드도 있지만 암호는 필수이며 올바른 것일 필요는 없습니까? – user3408293