При попытке войти на мой сайт я получаю: 2 ошибки, запрещающие сохранение этого пользователя: электронная почта не может быть пустой, электронная почта не может быть пустой - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь создать пользователей для своего веб-сайта и при регистрации на веб-сайте хочу, чтобы информация о пользователях помещалась в моем бэк-офисе. Я установил gem Devise и gem CanCanCan, но когда я пытаюсь зарегистрироваться на странице регистрации, появляется сообщение об ошибке, запрещающей сохранение этого пользователя: электронная почта не может быть пустой, электронная почта не может быть пустой. Я проверил похожие вопросы, но не смог исправить мою проблему.

Я на ruby ​​on rails obv

Вот мой переход:

# frozen_string_literal: true

class DeviseCreateUsers < ActiveRecord::Migration[5.2]
  def change
    create_table :users do |t|
      ## Database authenticatable          
      t.string :email                
      t.string :encrypted_password   
      t.string :token               

      ## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at

      ## Rememberable

      ## Trackable
      # t.integer  :sign_in_count, default: 0, null: false
      # t.datetime :current_sign_in_at
      # t.datetime :last_sign_in_at
      # t.string   :current_sign_in_ip
      # t.string   :last_sign_in_ip

      ## Confirmable
      # t.string   :confirmation_token
      # t.datetime :confirmed_at
      # t.datetime :confirmation_sent_at
      # t.string   :unconfirmed_email # Only if using reconfirmable

      ## Lockable
      # t.integer  :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
      # t.string   :unlock_token # Only if unlock strategy is :email or :both
      # t.datetime :locked_at


      t.timestamps
    end

    add_index :users, :email,                unique: true
    add_index :users, :reset_password_token, unique: true
    # add_index :users, :unlock_token,         unique: true
  end
end

Вот мойuser.rb:

class User < ApplicationRecord

  has_secure_password

  validates_presence_of :email
  validates_uniqueness_of :email
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
end

Вот мой users_controller.rb:

class UsersController < ApplicationController
    def user_params
        params.require(:user).permit(:email, :password, :password_confirmation, :role)
      end
end

регистрация new.html.erb:

<h2>Sign up</h2>

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= render "devise/shared/error_messages", resource: resource %>

  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
  </div>

  <div class="field">
    <%= f.label :password %>
    <% if @minimum_password_length %>
    <em>(<%= @minimum_password_length %> characters minimum)</em>
    <% end %><br />
    <%= f.password_field :password, autocomplete: "new-password" %>
  </div>

  <div class="field">
    <%= f.label :password_confirmation %><br />
    <%= f.password_field :password_confirmation, autocomplete: "new-password" %>
  </div>

  <div class="actions">
    <%= f.submit "Sign up" %>
  </div>
<% end %>

<%= render "devise/shared/links" %>

Скажите, если я что-то пропустилно я не думаю, что я новичок в рельсах, так что я могу быть Спасибо

1 Ответ

0 голосов
/ 11 октября 2019

has_secure_password для пользовательской аутентификации и не требуется / не должен использоваться с Devise.

Удалите UsersController и email проверку в модели User. Придумайте все это для вас.

Если вы хотите внести в список дополнительных атрибутов при регистрации, которые Devise не учитывает (в вашем случае это всего лишь role), добавьте следующее к своему ApplicationController ...

before_action :configure_permitted_parameters, if: :devise_controller?

protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:role])
  end

С хорошо ухоженными и проверенными в бою драгоценными камнями, такими как Devise, очень важно читать документацию, а не отклоняться от нее, если у вас нет веских причин для этого.

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