nathank
(Nathan Kershaw)
17 Febrero, 2022 21:12
1
Usé este fragmento de código para intentar reemplazar datos en masa en un campo personalizado de usuario. Lo derivé del importador de 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
Sin embargo, tuvo la consecuencia no deseada de borrar los otros valores de campos personalizados de los usuarios.
¿Alguien puede sugerir una forma de modificar el valor de un campo personalizado de usuario desde la consola que no cause caos?
1 me gusta
Creo que este formato solo cambia el campo personalizado en cuestión. Lo he probado brevemente y parece que funcionó.
users=User.where("users.created_at <= '2019-09-13'::timestamp")
users.each do |u|
u.custom_fields["user_field_16"] = "Nil"
u.save
end
Aunque si quisieras que el campo fuera NULL en lugar de decir ‘Nil’, podrías intentar esto en su lugar:
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 Me gusta
pfaffman
(Jay Pfaffman)
18 Febrero, 2022 10:46
3
También algo como
UserCustomField.create(user_id: 1, name: "user_field_4",value: "Oops")
Oh, pero si ya tiene un valor, ¡añadirá un segundo! Así que podrías
ucf=UserCustomField.find_by(user_id: name: 'user_field_4')
y luego tendrías que actualizarlo o crear uno nuevo.
Pero si creas varios, la experiencia de usuario los mostrará separados por comas y si se editan a través de la experiencia de usuario cuando se guardan, se guardan de nuevo como un solo valor.
Puedes echarles un vistazo con
UserCustomField.all
O
UserCustomField.where(name: x)
Eso es de memoria en mi teléfono, así que tu experiencia puede variar.
fzngagan
(Faizaan Gagan)
18 Febrero, 2022 12:19
5
Al hacer esto, estás reemplazando todo en el hash u.custom_fields con {\"user_field_16\" =\u003e nil} (nota el nil sin comillas)
nathank
(Nathan Kershaw)
18 Febrero, 2022 18:44
6
Gracias, sí, eso es lo que debería haber usado.
Sí, eso es exactamente lo que sucedió. ¡Me sentí bastante tonto después!
2 Me gusta
nathank
(Nathan Kershaw)
7 Mayo, 2022 13:09
7
Encuentro que esta es una herramienta útil para obtener la sintaxis de Rails correcta cuando se desean manipular estos UCF en la consola de Rails:
Si está reemplazando datos en ese campo
UserCustomField.find_by(user_id: =UserID=, name: "=UserFieldName=").update(value: "=NewValue=")
(dará un error si aún no hay datos en ese campo)
Si está completando ese campo por primera vez
UserCustomField.create(user_id: =UserID=, name: "=UserFieldName=", value: "=NewValue=")
7 Me gusta
j127
5 Agosto, 2022 02:52
8
¿Cómo creaste ese contenido dinámico en la publicación?
Parece que meta tiene este componente activado. (Solo estoy adivinando)
3 Me gusta
system
(system)
Cerrado
11 Marzo, 2023 07:42
10
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.