2017-06-30 1 views
1

私は、レールの背景から来る花見の初心者です。モデルが作成アクションで永続化されていることを確認するためのベストプラクティスを知りたいと思います。私は、ユーザーが正常に作成された場合、私は唯一のユーザーをリダイレクトすることを確認したかった花見 - モデルが永続化されているかどうかを正しくチェックする方法は?

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 [email protected]? 

仕事をしていませんが、それはきれいに見えません。どのようにハナミでこれを行うための最良の方法はありますか?

+0

私は、 'user'が'#create'によって作成されないとエラーを起こすのではないかと思います。 –

答えて

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 
2

ROM /花見は黙って、それをあなたがレポに渡しているの変更を破棄することはできませんいずれか(花見・モデルの場合Hanami::Model::Error)いくつかの種類の例外を発生させたり、エンティティを持続します。つまり、@user.id.nil?のようなチェックは完全に冗長です。

関連する問題