2017-05-18 4 views
0

Dans échafaudage Modèle-1 créer une action,rails pourquoi nouveau modèle(). Sauver ne crée pas travailler en action

def create 
    @auclub = Auclub.new(auclub_params) 
    user = User.find(current_user.id) 
    respond_to do |format| 
    if @auclub.save && user.update(auclub_id: @auclub.id) 
     format.html { redirect_to @auclub, notice: 'Auclub was successfully created.' } 
     format.json { render :show, status: :created, location: @auclub } 
    else 
     //some codes 
    end 
    end 
end 

et et je veux créer le club avec l'utilisateur

ce code fonctionne, mais si j'utilise comme ceci

user = User.find(current_user.id) 
user.new(auclub_id : @auclub.id) 
user.save 

cela ne fonctionne pas! Y a-t-il des différences entre update et new.save?

Répondre

0

Vous faites les choses de manière incorrecte.

Sans modèle et d'autres codes, je peux suggérer, faire comme ceci:

user = User.find(current_user.id) 
user.auclub_id = @auclub.id 
user.save 

Et je pense qu'il ya pas de méthode new disponible pour une instance ActiveRecord comme user dans votre cas.

new est utilisé sur la classe ActiveRecord pour créer une nouvelle instance comme:

user = User.new 

Et je ne pense pas qu'il y ait beaucoup de différence entre l'utilisation de la méthode update et réassigner manuellement un attribut et d'enregistrer l'objet en utilisant la méthode save mais vous devez garder un œil sur les performances, le principe DRY et les callbacks définis sur le modèle.

2

essayer:

@auclub = Auclub.new(auclub_params) 
    @user = User.find(current_user.id) 
    @auclub.save 
    @user.auclub_id = @auclub.id 
    @user.save 

En savoir plus APi dock