Как зарегистрировать пользователя в активной ассоциации с активными записями? - PullRequest
0 голосов
/ 19 апреля 2019

Я провожу эксперимент с использованием rails и devise_token_auth для аутентификации.Я успешно создал нового пользователя для devise_token_auth.Я уже ищу это в Google или здесь, на этом форуме, но я не могу найти надежную документацию о том, как это сделать.Но если вы предоставите мне ссылку.Это будет более ценно для нового разработчика рельсов, чтобы изучить его.Я пытаюсь добавить профили с пользователями.В пользовательской таблице я добавляю ссылку для профиля, и вот результат.

enter image description here

, как вы можете видеть, добавлено profile_id в моей пользовательской таблице.В моей пользовательской модели у меня есть это.

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable,
         :omniauthable
  include DeviseTokenAuth::Concerns::User 

  belongs_to :profile
end

, а также в моей модели профиля.У меня есть

class Profile < ApplicationRecord
    has_one :user
end

в моем application_controller.rb.У меня есть это

class ApplicationController < ActionController::Base
    include DeviseTokenAuth::Concerns::SetUserByToken
    before_action :configure_permitted_parameters, if: :devise_controller?
    #protect_from_forgery with: :exception 

    protected

    def configure_permitted_parameters
        registration_params = [ :name, :city, :email, :password, :password_confirmation, :profile => [:address]]
        devise_parameter_sanitizer.permit(:sign_up, keys: registration_params)
    end
end

Я пытаюсь использовать почтальон для регистрации пользователя для разработки.У меня есть эти параметры для отправки

{
    "name": "rayn",
    "email": "helloworld.232910@gmail.com",
    "password": "sample123",
    "password_confirmation": "sample123",
    "city": "green",
    "profile": {
        "address": "address here"
    },
    "confirm_success_url": "http://localhost:3000"
}

, но когда я отправляю это, я получаю эти ошибки

{
    "status": 500,
    "error": "Internal Server Error",
    "exception": "#<ActiveRecord::AssociationTypeMismatch: Profile(#70239077093620) expected, got {\"address\"=>\"address here\"} which is an instance of ActiveSupport::HashWithIndifferentAccess(#47165751411560)>",
    "traces": {

Я не знаю, верна ли моя модель.Я просто хочу добавить профиль каждого пользователя.Поправь меня за то, что я сделал в своем коде.Как я могу зарегистрировать пользователя с добавленным профилем?

1 Ответ

0 голосов
/ 19 апреля 2019

Я думаю, что вы пропустили accepts_nested_attribute, поэтому active_record не может понять, что делать с этим объектом. Предполагается, что в Profile есть адрес столбца:

# user.rb
accepts_nested_attributes_for :profile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...