Я следую учебнику по Rails на railstutorial.org. В настоящее время я собираюсь закончить главу 6. Когда я собираюсь создать нового пользователя через консоль rails, он создается в базе данных, но атрибут email установлен на nil
. Когда я назначаю пользователю электронное письмо напрямую, оно изменяется в памяти, но когда я иду и сохраняю его методом save
, чтобы сохранить его в базе данных, появляется следующая ошибка:
User Exists (0.2ms) SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER(?) AND "users"."id" != ? LIMIT
Почему он сохраняется в памяти, а не в базе данных?
Я попытался перенастроить базу данных с rails db:migrate
. И удаление всех пользователей в случае, если были другие пользователи с таким же адресом электронной почты (поскольку существует ограничение или правило проверки уникальности почты). Тем не менее получить ту же ошибку.
Это schema.rb
ActiveRecord::Schema.define(version: 2019_01_13_035531) do
create_table "users", force: :cascade do |t|
t.string "name"
t.string "email"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "password_digest"
t.index ["email"], name: "index_users_on_email", unique: true
end
end
Это модель пользователя:
class User < ApplicationRecord
before_save { self.email = email.downcase }
validates :name, presence: true, length: {maximum: 50}
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
has_secure_password
validates :password, presence: true, length: { minimum: 6 }
end