[rails] devise의 기본 정보

6698 단어 루비Railsdevise

devise 배포 및 기본 정보


  • devise 도입
  • devise의 기본값

  • Why



    devise에 관한 기사를 조사했을 때 devise의 컨트롤러를 만드는 기사 밖에 없고, application.controller만으로 완결시키고 싶었기 때문에. 또, 그 때에 devise가 디폴트로 가지는 범위를 모르고, 불필요한 컬럼이나 validation를 기술하고 있었기 때문에 에러의 해결에 시간이 걸렸기 때문에 이것을 참고해 주시면 좋겠습니다.



    devise 도입



    Gemfile(마지막 행)
    gem 'devise'
    

    터미널
    # 現在のディレクトリが~/projects/pictweetであることを確認
    % pwd
    
    # Gemをインストール
    % bundle install
    

    터미널
    # サーバーを起動
    % rails s
    

    터미널
    # deviseの設定ファイルを作成
    % rails g devise:install
    

    터미널
    # deviseコマンドでUserモデルを作成
    % rails g devise user
    

    아래와 같이 devise_for :users가 들어 있으면 OK!



    routes.rb
    Rails.application.routes.draw do
      devise_for :users
      root to: 'tweets#index'
      resources :tweets
    end
    

    다음은 테이블 만들기



    터미널
    # マイグレーションを実行
    % rails db:migrate
    

    데이터베이스에 테이블이 만들어지면 OK!



    마지막으로 아래도 잊지 않고!



    터미널
    # ctrl + Cでローカルサーバーを終了
    
    # 再度ローカルサーバーを起動
    % rails s
    

    이것으로 바로 devise의 도입이 끝났으므로, 나머지는 마음대로 구현할 뿐입니다.



    이번에는 기본 정보입니다 !!!





    여기는 별로 관계가 없습니다만, validates로 name, email, password 밖에 걸지 않고 데이타베이스를 확인하면 password의 부분이 encrypted_password로 컬럼으로서 등록하고 있습니다. "validates에 encrypted_password가 없어?"라고 돌진하고 싶은 곳입니다만 encrypted_password는 패스워드를 암호화해 테이블에 보존한다고 하는 것이므로 validates는 password를 거는 것만으로 ok. 덧붙여서 password_confirmation도 validates를 걸지 않아서 ok.



    이야기가 탈선했지만 여기





    13행째에 주목.



    devise를 설치하면 devise_parameter_sanitizer 메소드를 사용할 수 있습니다. devise에서 사용자 등록을 하는 경우에 사용할 수 있어 「특정의 컬럼을 허용하는」메소드가 됩니다. 이 메소드에 devise_parameter_sanitizer 메소드를 정의합니다.



    devise_parameter_sanitizer 메소드



    permit 메소드를 조합함으로써, devise에 정의되고 있는 스트롱 파라미터에 대해서, 스스로 새롭게 추가한 컬럼도 지정해 포함할 수 있습니다. 그래서 노멀한 신규 등록, 로그인 기능 정도라면 일부러 devise의 컨트롤러를 만들지 않아도 application.contoroller내에서 완결할 수 버립니다. (신규 등록 등으로 여러 페이지에 걸쳐 전환하는 경우 제대로 controller를 만드는 것이 좋다)



    application.controller.rb
    private
    def configure_permitted_parameters  # メソッド名は慣習
      # deviseのUserモデルにパラメーターを許可
      devise_parameter_sanitizer.permit(:deviseの処理名, keys: [:許可するキー])
    end
    

    14행째에 주목!



    application.controller.rb
    devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
    

    keys: 뒤에 오는 [ ]내에 :name 외에 본래 :email이나 :password 등을 넣어야 합니다. 하지만 devise의 디폴트로 뒤에서 마음대로 처리해 주기 때문에 여기는 : name만으로 ok!



    여담



    유효성 검사의 기본 해제 방법



    이것을



    application.controller.rb
    devise :database_authenticatable, :registerable,
             :recoverable, :rememberable, :validatable
    

    이렇게 할 뿐!



    application.controller.rb
    devise :database_authenticatable, :registerable,
             :recoverable, :rememberable
    

    요약



    devise는 간단하게 도입할 수 있어, 간단하게 신규 등록이나 로그인, 로그아웃 기능을 구현할 수 있는 훌륭한 gem입니다만, 그만큼 편리한 뒤에서는 다양한 디폴트가 마음대로 반영되어 버려 불필요한 에러등이 일어나기 쉬워지므로 최소한 간단한 디폴트의 소개를 했습니다.

    좋은 웹페이지 즐겨찾기