if service.validate(params) service.save do |hash| prefecture = Prefecture.find_by(code: service.prefecture_code) service.model.create( hash.except(:prefecture_code).merge(prefecture: prefecture) ) end head :no_content else raise( InvalidParamatersError, service.errors.full_messages.join(', ') ) end end end
は省略 def save super do |params| prefecture = Prefecture.find_by(code: prefecture_code) model.create( params.except(:prefecture_code).merge(prefecture: prefecture) ) yield params if block_given? end end end end
specify do post '/api/v1/shop', { latitude: 35.0, longitude: 138.0, prefecture_code: 'AE01' } expect(response.code).to be(204) expect(Shop.count).to be(1) end specify '異常系', rambulance: true do post '/api/v1/shop' expect(response.code).to be(400) expect(response.body).to include('緯度を入力してください') expect(response.body).to include('経度を入力してください') end end end