Я изучаю учебное пособие по RoR и занимаюсь проверкой моделей. Вот так выглядит моя модель:
class User < ApplicationRecord
validates(:name,
presence: true,
length: { maximum: 80 },
uniqueness: { case_sensitive: false },
)
validates(:pass,
presence: true,
)
validates(:email,
presence: true,
length: { maximum: 254 },
format: { with: /.*@.*\..*/ },
uniqueness: { case_sensitive: false },
)
before_save { email.downcase! }
end
однако, что я заметил в rails console
, это то, что это производит
два sql запроса с каждым .valid?
вызовом.
[wolf@devel web]$ r console --sandbox
Running via Spring preloader in process 20864
Loading development environment in sandbox (Rails 5.2.1)
Any modifications you make will be rolled back on exit
2.5.0 :001 > User.new.valid?
User Exists (0.4ms) SELECT 1 AS one FROM "users" WHERE "users"."name" IS NULL LIMIT $1 [["LIMIT", 1]]
User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."email" IS NULL LIMIT $1 [["LIMIT", 1]]
=> false
требуется ли это для сообщения о том, какие проверки были нарушены? Это можно обойти
чтобы уменьшить количество поездок в БД?