Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

478
Visualizações
undefined method 'keys' when using upsert

I'd like to use the upsert_all method to insert (and update) record from a collection in a simple query, for example:

books = [] 

10.times do |i|
  books << Book.new(name: "book #{i}")
end

Book.upsert_all(books)

however, I get the following error:

.../activemodel-6.1.4.1/lib/active_model/attribute_methods.rb:469:in `method_missing': undefined method `keys' for #<Book id: nil, name: "book 0"> (NoMethodError)

And what I am looking for is to be able to make an insert all or upsert_all of an arbitrary collection as an books for example, if you could help me I would be grateful

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

upsert_all expect an array of hashes, not ActiveRecord objects:

books = [] 

10.times do |i|
  books << { name: "book #{i}" }
end

Book.upsert_all(books)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda