web-dev-qa-db-fra.com

Rails - comment ajouter l'objet 'has_many' au 'propriétaire'

Dans mon application, un user a plusieurs score_cards et un score_card appartient à un user

La question est, chaque fois que je crée un nouveau score_card, c'est à dire, ScoreCardsController.create est appelé, comment ajouter ce nouvellement créé score_card à la current_user (J'utilise devise, donc current_user est un objet User valide).

40
ryanprayogo
current_user.score_cards << score_card

OR

score_card.user = current_user
score_card.save
70
grzuy

Utilisez la méthode du générateur d'association:

current_user.score_cards.build(params[:score_card])

Alternativement à build, vous pouvez utiliser create ou create! si vous ne vous souciez pas des validations dans le contrôleur.

11
Ryan Bigg

Je vais jeter cela là-bas au cas où quelqu'un chercherait un moyen d'ajouter plusieurs objets à un objet associé:

score_cards = ScoreCard.all
current_user.score_cards << score_cards

Pas besoin de current_user.save

10
Abram