nathank
(Nathan Kershaw)
Fevereiro 17, 2022, 9:12pm
1
Usei este trecho de código para tentar substituir dados em massa em um campo personalizado de usuário. Eu o derivei do importador Ning .
users=User.where("users.created_at <= '2019-09-13'::timestamp")
users.each do |u|
u.custom_fields = {"user_field_16" => "Nil"}
u.save
end
No entanto, isso teve a consequência não intencional de apagar os outros valores de campo personalizado dos usuários.
Alguém pode sugerir uma maneira de modificar um valor de campo personalizado de usuário a partir do console que não cause caos?
1 curtida
Eu acho que este formato muda apenas o campo personalizado em questão. Testei brevemente e pareceu resolver o problema.
users=User.where("users.created_at <= '2019-09-13'::timestamp")
users.each do |u|
u.custom_fields["user_field_16"] = "Nil"
u.save
end
Embora, se você quisesse que o campo fosse NULL em vez de “Nil”, você poderia tentar isto em vez disso:
users=User.where("users.created_at <= '2019-09-13'::timestamp")
users.each do |u|
u.custom_fields["user_field_16"] = NIL
u.save
end
4 curtidas
pfaffman
(Jay Pfaffman)
Fevereiro 18, 2022, 10:46am
3
Também algo como
UserCustomField.create(user_id: 1, name: "user_field_4",value: "Oops")
Ah, mas se já tiver um valor, ele adicionará um segundo! Então você pode
ucf=UserCustomField.find_by(user_id: name: 'user_field_4')
e então você precisaria atualizá-lo ou criar um novo.
Mas se você criar vários, a UX os mostrará separados por vírgula e, se forem editados pela UX, quando forem salvos, eles serão salvos de volta como um único valor.
Você pode dar uma olhada neles com
UserCustomField.all
Ou
UserCustomField.where(name: x)
Isso é de memória no meu celular, então sua experiência pode variar.
fzngagan
(Faizaan Gagan)
Fevereiro 18, 2022, 12:19pm
5
Ao fazer isso, você está substituindo tudo no hash u.custom_fields por {\"user_field_16\" =\u003e nil} (note o nil sem aspas)
nathank
(Nathan Kershaw)
Fevereiro 18, 2022, 6:44pm
6
Obrigado - sim, era isso que eu deveria ter usado.
Sim, foi exatamente o que aconteceu. Senti-me bastante tolo depois!
2 curtidas
nathank
(Nathan Kershaw)
Maio 7, 2022, 1:09pm
7
Acho esta uma ferramenta útil para acertar a sintaxe do Rails quando você quer manipular esses UCFs no console do Rails:
Se você estiver substituindo dados nesse campo
UserCustomField.find_by(user_id: =UserID=, name: "=UserFieldName=").update(value: "=NewValue=")
(dará um erro se ainda não houver dados nesse campo)
Se você estiver preenchendo esse campo pela primeira vez
UserCustomField.create(user_id: =UserID=, name: "=UserFieldName=", value: "=NewValue=")
7 curtidas
j127
Agosto 5, 2022, 2:52am
8
Como você criou esse conteúdo dinâmico na postagem?
Kuro22
Agosto 5, 2022, 3:01am
9
Parece que a meta tem esse componente ativado. (Apenas um palpite)
3 curtidas
system
(system)
Fechado
Março 11, 2023, 7:42am
10
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.