2011-07-16 3 views
0

Im nouveau à Rails, im essayant d'exécuter la méthode d'enregistrement dans les Créer méthode plusieurs fois d'un ActionController pour insérer plusieurs valeursRoR ActiveRecord méthode save

def create 

    @pin = Pin.new(params[:pin]) 
    i = 1 

    while i < 10 
    if @pin.save 
    end 
    end 

    redirect_to @pin 

end 

Cela fonctionne, mais seulement insère un enregistrement il n'y a pas Contraints qui impose l'unicité des enregistrements dans ma base de données. S'il vous plaît comment puis-je corriger cela?

+0

Pourquoi downvote? Upvoted à nier. –

+0

BTW vous avez ici une boucle sans fin, puisque vous n'incrémentez jamais i dans la boucle. – Thilo

+0

Opps, Omitted quoi lors de la reproduction du code ici, ce n'est pas ommited dans l'original – dev

Répondre

3

Un objet AR correspond à une ligne. Vous devez créer un nouvel objet pour chaque ligne que vous voulez ajouter.

Quelque chose comme ça:

10.times do 
    pin = Pin.new(params[:pin]) 
    pin.save 
end 

ou

10.times do 
    Pin.create(params[:pin] 
end 

create méthode crée un objet AR et enregistre dans la base de données. Cependant, vous ne pouvez pas rediriger vers 10 objets.

+0

A travaillé comme prévu – dev

0

vous devriez prolonger votre ressource avec la méthode create_multiple et envoyer params sous forme de tableau, voir les détails here

Questions connexes