Hanami - 如何正确检查模型是否一直存在?

时间:2017-06-30 12:25:56

标签: ruby hanami

我是来自铁路背景的hanami的新手,我想知道验证模型是否已在创建操作中保留的最佳做法。

我创建了一个如下所示的用户/创建操作:

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?

但这不是hanami的做事方式。目前我正在这样做:

redirect_to '/users' if !@user.id.nil?

这项工作起作用,但它看起来并不干净。用hanami做最好的方法怎么样?

2 个答案:

答案 0 :(得分:4)

尝试这样的事情。

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

答案 1 :(得分:2)

ROM / Hanami无法默默地丢弃您传递给回购的更改,它会引发某种异常(在hanami-model的情况下为Hanami::Model::Error)或者保留您的实体。也就是说,像@user.id.nil?这样的检查完全是多余的。