Ruby マジックを使用して、(if/else-if ステートメントの束になる前に) コードをリファクタリングしようとしています。ただし、コード ブロックをハッシュの値として使用しようとすると、次のエラーが発生します。
syntax error, unexpected '}', expecting tASSOC :restaurant => { Cuisine.all },
この同じエラーが、次の行と次の行 (:hotel
および:attraction
) で繰り返されます。
ここで間違っていることは何ですか?
def moderation_categories(klass)
klass_map = {
:restaurant => { Cuisine.all },
:hotel => { Category.where(place_type: "Hotel") },
:attraction => { Category.where(place_type: "Attraction") }
}
list = []
klass_map[klass.to_sym].call.each { |c| list << c.name }
list.sort
end