Rails关联 - 如何将'has_many'对象添加到'owner'

rya*_*ogo 40 associations ruby-on-rails-3

在我的应用程序中,a user有很多score_cards,score_card属于auser

问题是,每当我创建一个新的score_card,即被ScoreCardsController.create调用时,如何将这个新创建添加score_cardcurrent_user(我正在使用设计,因此current_user是一个有效的User对象).

grz*_*zuy 69

current_user.score_cards << score_card
Run Code Online (Sandbox Code Playgroud)

要么

score_card.user = current_user
score_card.save
Run Code Online (Sandbox Code Playgroud)

  • 我相信这些实际上并不等同,因为`<<`将保存关联(无需显式调用`User#save`). (10认同)

Rya*_*igg 10

使用关联构建器方法:

current_user.score_cards.build(params[:score_card])
Run Code Online (Sandbox Code Playgroud)

或者给build你可以使用create或者create!,如果你不关心控制器的验证.


Abr*_*ram 10

如果有人想要一种方法将多个对象添加到关联对象,我将把它扔出去:

score_cards = ScoreCard.all
current_user.score_cards << score_cards
Run Code Online (Sandbox Code Playgroud)

不需要current_user.save