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

298
Visualizações
Recursive accepts_nested_attributes_for en Rails, ¿es posible?

Quiero crear una estructura de árbol entre dos modelos, Bar y Foo.

Bar tiene muchos Foos

 Bar / | \ Foo Foo Foo ¦ Bar / | \ Foo Foo Foo

Bar puede pertenecer opcionalmente a Foo.

Bar tiene muchos Foos, hasta el infinito y más allá...

Configuré cosas como esta, pero no parece sembrar correctamente.

Incluso si comento las validaciones que tengo, aparece el siguiente error:

 ActiveRecord::RecordInvalid: Validation failed: Foos bar must exist

No puedo entender por qué.

 class Bar < ApplicationRecord has_many :foos, inverse_of: :bar accepts_nested_attributes_for :foos end class Foo < ApplicationRecord belongs_to :bar, inverse_of: :foos accepts_nested_attributes_for :bar end class CreateFoos < ActiveRecord::Migration[6.1] def change create_table :foos do |t| t.text :description, null: false t.timestamps end end end class CreateBars < ActiveRecord::Migration[6.1] def change create_table :bars do |t| t.text :description t.references :foo, foreign_key: true, null: true, on_delete: :cascade, on_update: :cascade t.timestamps end end end class AddBarIdToFoosTable < ActiveRecord::Migration[6.1] def change add_reference :foos, :bar, foreign_key: true, null: false, on_delete: :cascade, on_update: :cascade end end Bar.create!([ { description: 'Lorem ipsum...', foos_attributes: [ { description: 'Lorem ipsum...', bar_attributes: { description: 'Lorem ipsum...', foos_attributes: [ { description: 'Lorem ipsum...', bar_attributes: { description: 'Lorem ipsum...', foos_attributes: [ { description: 'Lorem ipsum...' }, { description: 'Lorem ipsum...' }, { description: 'Lorem ipsum...' }, { description: 'Lorem ipsum...' } ] } } ] } } ] } ])
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

ActiveRecord::RecordInvalid: Validation failed: Foos bar must exist

  • Esto le dice que una de sus declaraciones de Foo requiere la presencia de bar
  • La referencia a la bar en la declaración de su modelo para Foo está en la asociación belongs_to
  • belongs_to está validado por presencia por defecto en ciertas versiones de Rails; cambiar belongs_to :bar a belongs_to :bar, optional: true probablemente resolverá su problema

Referencia: https://github.com/rails/rails/pull/18937/files

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