Для некоторых при регистрации validate_uniqueness_of не работает, даже если он работает при запуске консолиРубин на рельсы проверки ошибки
2.1.5 :001 > User.create_with_password('rajiv', 'abc')
(0.1ms) begin transaction
User Exists (0.4ms) SELECT 1 AS one FROM "users" WHERE "users"."username" = 'rajiv' LIMIT 1
(0.2ms) rollback transaction
=> #<User id: nil, username: "rajiv", salt: "ddda20c52e698f6e5623d7e782e2cd19", password_hash: "565b91a38e2acc41887e3936fe660b68245b3f1d8118f38bbc...">
2.1.5 :002 >
def register
@username = params[:Username]
@password = params[:password]
@rePassword = params[:rePassword]
user = User.create_with_password(@username, @password)
if user
session[:signed_in] = true
session[:username] = user.username
flash[:notice] = "User successfully created you can sign in now"
redirect_to '/Sign_up'
else
flash[:notice] = "User already exists"
end
Пожалуйста, скажите мне, что я делаю неправильно веб-сайта IM запустить его на это:
https://ipt-dynaman.c9.io/Sign_up
вот мой код модели:
class User < ActiveRecord::Base
validates_presence_of :username, :salt, :password_hash
validates_uniqueness_of :username
def self.create_with_password(username, password)
salt = SecureRandom.hex
password_hash = self.generate_hash(password, salt)
self.create(
username: username,
salt: salt,
password_hash: password_hash
)
end
def verify_password(password)
self.password_hash == User.generate_hash(password, self.salt)
end
def self.generate_hash(password, salt)
digest = OpenSSL::Digest::SHA256.new
digest.update(password)
digest.update(salt)
digest.to_s
end
end
Спасибо: D плохой дизайн разработки – dynaman
create не только для отношений. Также сохраните и сохраните! оба запускают проверки - они просто отличаются тем, что они делают, если проверки говорят, что запись недействительна. –
Истина о 'save' и' save! 'Вторая генерирует исключение, когда проверки не выполняются. Я не нашел никакого метода create для ActiveRecord, кроме как для ассоциаций. Ответ ссылается на «путь рельсов». –