Rails - Comment utiliser Find or Create
J'ai le texte suivant:
@permission = @group.permissions.create(
:user_id => @user.id,
:role_id => 2,
:creator_id => current_user.id)
Comment puis-je mettre à jour que pour être find_or_create
de sorte que si ce dossier existe déjà, il est affecté à @permission
et si elle n'existe pas, la création de l'enregistrement?
source d'informationauteur AnApprentice
Vous devez vous connecter pour publier un commentaire.
Sujets connexes:
Vous pouvez étendre ActiveRecord avec votre propre
update_or_create
méthode (voir rubrique connexe) et vous pouvez ensuite utiliser cetteOu vous pouvez utiliser
find_or_create_by...
méthode:Tandis que le accepté réponse est correcte il est important de noter que dans les Rails 4 cette syntaxe va changer (et le hachage de la syntaxe). Vous devriez écrire le suivant:
Qui ressemble en fait beaucoup plus proche de l'original de votre méthode! Voir la sous-section Obsolète Finders pour plus de détails.
Je suis à jour des questions avec versionnées réponses. En raison de son importance.
Rails 4 (docs)
Il ya quelques façons de "trouver ou de créer" un objet, on est
find_or_create_by(args)
Mais la de la collectivité préféré façon est à l'aide de
where
client = Client.where(email: "[email protected]", phone: "4255551212").first_or_create
et puis vous pouvez faire quelque chose comme:
Rails 3 (docs)
Ou bien vous voulez essayer si vous avez de nombreux champs à remplir:
voir ce post:
Comment puis-je passer plusieurs attributs à find_or_create_by dans Rails 3?