/ / Qual é a melhor prática para atualizar dados de semente de trilhos - ruby-on-rails, rake, seed

Qual é a melhor prática para atualizar dados de semente de trilhos - ruby-on-rails, rake, seed

Eu tenho um aplicativo de trilhos em produção com dados de sementes. Precisamos adicionar mais dados de sementes, mas usando rake db:populate replicará todos os dados antigos da semente e, claro, não queremos adicionar os dados às migrações.

Qual é o melhor método para adicionar dados de semente extra ao aplicativo?

Respostas:

1 para resposta № 1

Você provavelmente terá que construir outro ancinhotarefa. Ou você pode fazer verificações em cada nova linha para ver se ela já existe. Pode levar mais tempo para ser executado assim, mas pelo menos você não terá duplicatas.


1 para resposta № 2

Eu uso uma solução desajeitada no meu arquivo de semente para impedir que os mesmos dados sejam adicionados duas vezes.

if Therapy.count == 0
therapies = Therapy.create([
{ :name => "Peritoneal dialysis"
},
{ :name => "Haemodialysis"
},
{ :name => "Plasma therapy"
},
{ :name => "Laparotomy"
},
{ :name => "Haemofiltration"
}
])
end

Eu suponho que isso poderia ser modificado para o seguinte

   if Therapy.count == 0
therapies = Therapy.create([
{ :name => "Peritoneal dialysis"
},
{ :name => "Haemodialysis"
},
{ :name => "Plasma therapy"
},
{ :name => "Laparotomy"
},
{ :name => "Haemofiltration"
}
])
elsif Therapy.count == 4
therapies = Therapy.create([
{ :name => "NEW THERAPY"
}
])
end

1 para resposta № 3

Fique de pé sobre os ombros dos gigantes

Dê uma olhada no SeedFu gema.

Ele permite que você crie um arquivo de propagação como este, que se vincula automaticamente a uma ou mais colunas:

User.seed(:id,
{ id: 1, login: "jon",   email: "jon@example.com",   name: "Jon"   },
{ id: 2, login: "emily", email: "emily@example.com", name: "Emily" }
)

Você também pode atualizar esses arquivos de propagação e ele manipulará a atualização dos valores do banco de dados.

Isso, em combinação com Banco de sementesé o que acabei usando.


-1 para resposta № 4

Se você acha que deveria haver uma tarefa rake para algo, você pode querer verificar as tarefas disponíveis.

rake -T seed
rake db:seed  # Load the seed data from db/seeds.rb

Dito isto seed_fu fornece muito melhor funcionalidade IMHO