Ханами - Как правильно проверить, сохранилась ли модель?

Я новичок в ханами, родом из рельсов, и я хотел бы узнать, как лучше всего проверить, сохранилась ли модель в действии создания.

Я создал действие 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? полностью избыточны.

Другие вопросы по тегам