Webアプリケーションを作成しているのですが、moduleの戻り値の設計についてどうすれば良いのか悩んでいます。

「usersモデルのuser_nameを更新する」という単純なmoduleを作成することを例にしてみます。

module UserNameUpdate
  def update(user, user_name)
    if user.blank?
      return xxx
    end

    if user_name.blank?
      return xxx
    end

    user.update!(user_name: user_name)
  end
end

引数がnilでないことや、必要であれば型もチェックするかもしれません。
hashで返してみることやstringで返すことも考えてみましたが、奥が深くて指針となるようなドキュメントを読んでみたいです。

module UserNameUpdate
  def update(user, user_name)
    hash = {
      code: 1,
      message: nil
    }

    if user.blank?
      hash['message'] = '引数のmessageがnilです'
      return hash
    end

    if user_name.blank?
      hash['message'] = '引数のuser_nameがnilです'
      return hash
    end

    user.update!(user_name: user_name)
  end
end

戻り値はどう設計するのがベストでしょうか。Ruby/Railsに関係なく普遍的な問題かと思っていますので、言語/FWは特に限定はしないです。
ドキュメントや良いアイディアがあれば教えていただけますでしょうか。

あと、タグって何を付けるのが適切ですかね。。それっぽいタグが無く。。