Я создаю RESTful
API, используя Rails API Mode
.
Я использую devise
для обработки создания пользователя и simple_token_authentication
для обработки создания и авторизации токена.
Вот как я делаю запрос на выборку:
async requestAccountCreation(data) {
await fetch('http://localhost:3000/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: data
})
.then(response => response.json())
.then(data => {
console.log(data)
})
.catch(e => {
console.log(e)
})
}
Когда я console.log()
получаю данные requestAccountCreation(data)
, это дает мне допустимую строку JSON, так что никаких проблем с этим нет. Вот что отправлено на сервер Rails
:
{"firstname":"Tristan","lastname":"Vermeesch","username":"PlayBossWar","email":"titivermeesch2@gmail.com","address":"Rue Haute, 37 5550 Chairière","password":"jsoaod"}
Теперь вот часть Rails
, первая моя user.rb
:
class User < ApplicationRecord
acts_as_token_authenticatable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
validates :firstname, presence: true
validates :lastname, presence: true
validates :username, presence: true
validates :address, presence: true
validates :idcard, presence: true
end
Дополнительные поля - это поля, которые я добавил к уже существующим, которые devise
сгенерировал для меня, я перенес все файлы.
Это route
Я использовал:
devise_for :users, :controllers => { registrations: 'registrations' }
Как видите, я добавил собственный контроллер для обработки дополнительных полей, вот он:
class RegistrationsController < Devise::RegistrationsController
private
def sign_up_params
params.permit(:firstname, :lastname, :email, :password, :username, :idcard, :address)
end
def account_update_params
params.permit(:firstname, :lastname, :email, :password, :current_password, :username, :idcard, :address)
end
end
Я получил это из поста StackOverflow.
Теперь у меня ошибка в консоли, вот она:
Started POST "/users" for 127.0.0.1 at 2019-07-11 12:24:42 +0200
Processing by RegistrationsController#create as */*
Parameters: {"firstname"=>"Tristan", "lastname"=>"Vermeesch", "username"=>"PlayBossWar", "email"=>"titivermeesch2@gmail.com", "address"=>"Rue Haute, 37 5550 Chairière", "password"=>"[FILTERED]", "registration"=>{"firstname"=>"Tristan", "lastname"=>"Vermeesch", "username"=>"PlayBossWar", "email"=>"titivermeesch2@gmail.com", "address"=>"Rue Haute, 37 5550 Chairière", "password"=>"[FILTERED]"}}
Unpermitted parameter: :registration
(0.1ms) begin transaction
↳ /home/tristan/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = ? LIMIT ? [["email", "titivermeesch2@gmail.com"], ["LIMIT", 1]]
↳ /home/tristan/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
(0.1ms) rollback transaction
↳ /home/tristan/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
Completed 200 OK in 452ms (Views: 0.2ms | ActiveRecord: 5.2ms)
Итак, это говорит о том, что есть недопустимый параметр :registration
.
Дело в том, что я не знаю, откуда это взялось, я не передаю его в свой интерфейс, так что это должно быть разработано, но я не знаю, почему это происходит.
После отключения оболочки, как предложено, теперь моя ошибка:
Started POST "/users" for 127.0.0.1 at 2019-07-11 13:46:28 +0200
Processing by RegistrationsController#create as */*
Parameters: {"firstname"=>"Tristan", "lastname"=>"Vermeesch", "username"=>"PlayBossWar", "email"=>"titivermeesch25@gmail.com", "address"=>"Rue Haute, 37 5550 Chairière", "password"=>"[FILTERED]"}
(0.2ms) begin transaction
↳ /home/tristan/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
User Exists (0.5ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = ? LIMIT ? [["email", "titivermeesch25@gmail.com"], ["LIMIT", 1]]
↳ /home/tristan/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
(0.2ms) rollback transaction
↳ /home/tristan/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
Completed 200 OK in 430ms (Views: 0.3ms | ActiveRecord: 10.9ms)