2010-01-06 5 views
6

J'ai un modèle Bill avec le modèle imbriqué Customer. Le modèle Customer possède un numéro de téléphone avec une validation d'unicité. Lors de la création de la facture, je souhaite récupérer l'enregistrement existant en fonction du numéro de téléphone ou en créer un nouveau si ce dernier n'existe pas. Comment dois-je le faire de manière RESTful?Ruby on rails - attributs imbriqués: Comment faire une recherche ou créer un modèle imbriqué

+0

Sur d'autres recherches et googler j'ai découvert que je pouvais ajouter un: clé identifiant les customer_attributes et rails à jour l'enregistrement au lieu de créer un nouveau. En d'autres termes, je dois émettre un customer_attributes [: id] = find_by_phone (customer_attributes [: phone]). Id Ce que je ne comprends pas (encore) est sur quel crochet dans le cycle de vie du modèle (avant/après, valider/enregistrer) ou même quel modèle (client/facture) devrais-je faire. La solution semble être assez triviale dans ce cas mais elle devient compliquée dans les champs profondément imbriqués. – TMaYaD

Répondre

0

Vous pouvez consulter les méthodes find_or_create ou find_or_create_by (qui sont créées dynamiquement). Un peu de googling devrait vous permettre d'y arriver le reste du temps, je pense.

2

vous utilisez la méthode find_or_create_by qui ressemblerait à quelque chose comme ceci dans votre cas:

fetchedRecord = Bill.find_or_create_by_phone_number(customer.phone_number) 
0

Il ne semble pas que ces réponses sont ce que vous demandez. Oubliez Rails, ma question serait, quelle est la façon RESTful de créer une ressource qui pourrait déjà exister? Devriez-vous POSTER à l'URL des ressources (liste), puis attendre un code d'état HTTP de 201 si la ressource a été créée et un 200 s'il existait déjà?

Il semble que cela devrait être précisé dans une norme quelque part. Au fait, c'est ainsi que je le manipule - avec des codes d'état.

0

Je moi place dans le rappel de l'association before_add

+0

Veuillez placer des commentaires dans la section des commentaires. –

Questions connexes