У меня есть эта модель
class User
include DataMapper::Resource
include BCrypt
property :id, Serial
property :email, String, :required => true
property :password_hash, Text, :required => false
property :user_name, String, :required => true
property :birthdate, Date
property :city, String
property :state, String
property :zip, String
property :bio, Text
property :validated, Boolean, :default => false
property :validation_code, String
property :created_at, DateTime
property :updated_at, DateTime
end
У меня есть этот маршрут
get '/validate/:code/:user_id/?' do
@user = User.get params[:user_id]
if @user.validation_code == params[:code]
@user.validated = true
@user.save
end
erb :validate
end
@user.validated устанавливается в значение true, но не сохраняется. Я предполагаю, что это что-то очень простое, но я не могу понять это. Кто-нибудь знает, почему присвоение true для @ user.validated не сохраняется?
Спасибо.
------ Обновление ----------
Когда я говорю datamapper, чтобы поднять на сбой
User.raise_on_save_failure = true
Я получаю эту ошибку
#<DataMapper::SaveFailureError: User#save returned false, User was not saved>
Я знаю, что это немного, но я знаю, что я пытаюсь сохранить данные, и картографу не нравится то, что я делаю. Я знаю, что datamapper не любит «грязные» записи, но я не вижу, что дело здесь, верно?