This page looks best with JavaScript enabled

rom-rbのmapperで undefined method key? が出る時の対処法

 ·  ☕ 1 min read

現象

rom-rbでmapperを使うと key? がないというエラーが出た

1
2
3
4
5
6
7
class UserMapper < ROM::Transformer
  relation :users, as: :default

  map_array do
    constructor_inject Domain::Model::User
  end
end

どうやらmapperの処理に入る時に ROM::Struct::User として来る場合があるよう(なぜかはよくわからなかった)

対処法

1
2
3
4
5
6
7
8
class UserMapper < ROM::Transformer
  relation :users, as: :default

  map_array do
    symbolize_keys
    constructor_inject Domain::Model::User
  end
end

解説

HashでこないならHashにしてしまえば問題ないだろうということで、HashにするDry::Transformerの関数を探したがなかった
なので symbolize_keys で代用
これはHashのkeyをSymbolに変換するものだけど、その処理の前に Hash[hash] と言うことをているのでHashへの変換ができる

Share on

ippachi
WRITTEN BY
ippachi
Software Developer