2010-01-06 11 views
6

Tengo un modelo Bill con modelo anidado Customer. El modelo Customer tiene un número de teléfono con una validación de exclusividad. Al crear la factura, quiero recuperar el registro existente según el número de teléfono o crear uno nuevo, si no existe. ¿Cómo debo hacerlo de una manera RESTful?Ruby on rails - atributos anidados: Cómo hacer un encontrar o crear del modelo anidado

+0

En una posterior investigación y googlear descubrí que podía añadir una: clave de identificación a los customer_attributes y rieles actualiza el registro en lugar de crear una nueva. En otras palabras, tengo que emitir un customer_attributes [: id] = find_by_phone (customer_attributes [: phone]). Id Lo que no entiendo (todavía) es qué gancho del ciclo de vida del modelo (antes/después, validar/guardar) o incluso uno que modelo (cliente/factura) debería hacer esto. La solución parece ser bastante trivial en este caso, pero se vuelve complicada en campos profundamente anidados. – TMaYaD

Respuesta

0

Puede ver los métodos find_or_create o find_or_create_by (que se crean dinámicamente). Un poco de Google debería llevarte allí el resto del camino, creo.

2

que utilizaría el método find_or_create_by la que sería algo como esto en su caso:

fetchedRecord = Bill.find_or_create_by_phone_number(customer.phone_number) 
0

No parece como estas respuestas son lo que están pidiendo.

Olvídate de Rails, mi pregunta sería, ¿cuál es la forma RESTANTE de crear un recurso que ya podría existir? ¿Deberías POSTAR a la URL de recursos (lista) y luego esperar un código de estado HTTP de 201 si el recurso fue creado y un 200 si ya existió?

Parece que esto debería describirse en un estándar en alguna parte.

Por cierto, así es como lo estoy manejando, con códigos de estado.

0

coloco mina en la devolución de llamada de la asociación before_add

+0

Por favor coloque los comentarios en la sección de comentarios. –

Cuestiones relacionadas