Как считывать и выводить [отфильтрованное] значение из параметров в Ruby

Я использую curlдля публикации json в моем примере службы. Я публикую json в службу, как показано ниже

curl 
> -i 
> -H "Accept: application/json" 
> -H "Content-type: application/json" 
> -X POST 
> -d '{"email":"micky@minn.com","full_names":"Inisne Dats", "password": "oasswn"}' http://localhost:3000/api/admin_users

Ниже приведен мой метод, который отвечает за создание и сохранение нового объекта активной записи

def create
        user = AdminUser.new(white_list)    
        if user.save
            head 200
        else
            puts user.errors.full_messages
            head 500
        end

end

Мой метод белого списка ниже

private
    def white_list
        params.require(:admin_user).permit(:email,:full_names,:password)
    end

Проблема в том, что этот код никогда не сохраняется, потому что пароль фильтруется, я проверил параметры, и это выходные данные;

 {"email"=>"micky@minn.com", "full_names"=>"Inisne Dats", "password"=>"[FILTERED]", "admin_user"=>{"email"=>"micky@minn.com", "full_names"=>"Inisne Dats"}}

Может ли кто-нибудь помочь показать мне, как получить отфильтрованный пароль и использовать его, как только параметры достигнут метода контроллера create . Или я использую функцию белого списка неправильно?

1 ответ

  1. @j-dexx дал мне этот ответ. Я должен был обернуть параметры с корневым "admin_user"ключом, как так:

    { "admin_user":
      { "email": "micky@minn.com",
        "full_names": "Inisne Dats",
        "password": "oasswn",
        "password_confirmation": "oasswn"
      }
    }
    

    …поэтому я изменил свой запрос на:

    curl \
    > -i \
    > -H "Accept: application/json" \
    > -H "Content-type: application/json" \
    > -X POST \
    > -d '{"admin_user":{"email":"micky@minn.com","full_names":"Inisne Dats","password":"oasswn","password_confirmation":"oasswn"}}' http://localhost:3000/api/admin_users
    

    Это сделало трюк!