У меня есть этот код, который работает, но я не совсем уверен, как это сделать?validates_confirmation_of: password
Он проверяет пароли, но как это сделать?
Я знаю, что такое attr_reader и accessor, но на самом деле не понимаю, как datamapper знает, что сравнивать: password with: password_confirmation? Какую магию выполняет datamapper?
Вот моя модель пользователя:
require 'data_mapper'
require 'dm-postgres-adapter'
require 'bcrypt'
class User
include BCrypt
include DataMapper::Resource
property :id, Serial
property :username, String
property :email, String
property :password_digest, Text
validates_confirmation_of :password
attr_reader :password
attr_accessor :password_confirmation
def password=(password)
@password = password
self.password_digest = BCrypt::Password.create(password)
end
end
Вот мой контроллер пост:
post '/sign-up' do
new_user = User.create(:username => params[:username], :email => params[:email], :password => params[:password], :password_confirmation => params[:password_confirmation])
session[:user_id] = new_user.id
redirect '/welcome'
end
Вопросы, которые вы задаете, вероятно, слишком широки. Когда я начал изучать Ruby, я ошибся в том, что сначала изучил Rails, что сильно использует DSL (Domain Specific Languages), такие как макросы 'property' и' validates' в вашем примере. Я бы настоятельно рекомендовал сначала изучить Ruby, а не определенную библиотеку, такую как DataMapper. – Kris
Hey Kris жаль, что я не был ясен, я на самом деле изучаю Ruby, я начинаю Rails через несколько недель. Я отметил Rails в надежде, что это расширит мою аутрич-работу, потому что они используют datamapper аналогичным образом. –
Когда я реферировал Rails, я также имею в виду все библиотеки, такие как DataMapper, Sinatra и т. Д. :) – Kris