Я пытаюсь создать простую функцию регистрации пользователя с помощью Rails 5 и Mongoid. Моя пользовательская модель и контроллер выглядят так:
пользователь.rb
class User
include Mongoid::Document
include Mongoid::Timestamps
validates_presence_of :email
validates_uniqueness_of :email, case_sensitive: false
validates :password, presence: true, confirmation: true
validates_presence_of :password_confirmation
field :email, type: String
field :password, type: String
...
end
users_controller.rb
...
def create
@user = User.new(user_params)
if @user.save
json_response(nil, nil, :created)
else
json_response(@user.errors.full_messages, nil, :bad_request)
end
end
...
private
def user_params
params.require(:user).permit(:email, :password, :password_confirmation, :avatar)
end
Теперь мне нужно проверить, совпадает ли password_confirmation с паролем, оба параметра отправляются через запрос, но password_confirmation не передается новому пользовательскому объекту, хотя он занесен в белый список сильных параметров:
журнал:
Started POST "/users" for 127.0.0.1 at 2017-06-02 13:03:10 +0200
Processing by UsersController#create as JSON
Parameters: {"password"=>"[FILTERED]", email"=>"[email protected]", "password_confirmation"=>"[FILTERED]", "user"=>{"email"=>"[email protected]", "password"=>"[FILTERED]"}}
я не хочу добавлять
field :password_confirmation
к моей модели, которая решает эту проблему. Мне просто нужно сделать атрибут виртуальным и избавиться от него после проверки. Что я упускаю или делаю неправильно? Или каково правильное отношение к этому?