2010-12-05 3 views
4

Ceci est si simple que c'est ridicule que je n'ai trouvé aucune information à ce sujet, y compris les docs API et Rails code source:Qu'est-ce qu'une méthode de mise à jour pour les associations Rails?

J'ai une: appartient à l'association et j'ai appris à comprendre les méthodes de modèle normales que vous appelez dans le contrôleur lorsque vous n'avez pas une association sont légèrement différentes de celles que vous faites.

Par exemple, j'ai mon association fonctionne bien pour l'action create du contrôleur:

@user = current_user 
@building = Building.new(params[:building]) 

respond_to do |format| 
    if @user.buildings.create(params[:building]) 
# et cetera 

, mais je ne peux pas trouver de la documentation sur la façon dont fonctionne la mise à jour:

@user = current_user 
@building = @user.buildings.find(params[:id]) 

respond_to do |format| 
    if @user.buildings.update(params[:building]) 
# et cetera 

Utilisation de la mise à jour méthode donne l'erreur "mauvais nombre d'arguments (1 pour 2)" et je ne peux pas comprendre quels arguments sont censés être envoyés.

Répondre

10

Utilisation update_attributes:

@user = current_user 
@building = @user.buildings.find(params[:id]) 

respond_to do |format| 
    if @building.update_attributes(params[:building]) 
    #... 
    end 
end 
+0

Ca y est! J'ai déjà essayé celui-là mais j'utilisais le mauvais objet avec. Merci. – user478798

+0

@ user478798 De rien! :-) –

+0

Note: 'update_attributes' n'exécutera pas de validations sur l'objet. – agbodike

Questions connexes