Ханами - Как правильно проверить, сохранилась ли модель?
Я новичок в ханами, родом из рельсов, и я хотел бы узнать, как лучше всего проверить, сохранилась ли модель в действии создания.
Я создал действие users / create, которое выглядит так:
class Create
include Web::Action
def call(params)
repository = UserRepository.new
@user = repository.create(name: params[:user][:name],
email: params[:user][:email],
type: 'standard')
redirect_to '/users'
end
end
Я хотел убедиться, что я перенаправляю пользователей, только если пользователь был успешно создан. Я рельсы, я бы сделал что-то вроде этого:
redirect_to '/users' if @user.persisted?
Но это не способ ханами. В настоящее время я делаю это:
redirect_to '/users' if !@user.id.nil?
Который делает работу, но не выглядит чистым. Как лучше всего сделать это с ханами?
2 ответа
Решение
Попробуйте что-то вроде этого.
def call(params)
repository = UserRepository.new
@user = repository.create(name: params[:user][:name],
email: params[:user][:email],
type: 'standard')
redirect_to '/users'
rescue Hanami::Model::Error
# handle the error
end
ROM/Hanami не может молча отменить изменения, которые вы передаете в репозиторий, либо вызывает какое-то исключение (Hanami::Model::Error
в случае с ханами-моделью) или сохраняется ваша сущность. Тем не менее, проверки как @user.id.nil?
полностью избыточны.