2009-11-04 5 views
2

J'essaie d'insérer dans plusieurs tables en utilisant des rails .. J'ai une table appelée utilisateurs et services. Lorsque je crée un utilisateur, les détails de l'utilisateur doivent entrer dans les utilisateurs et un nom de service et un ID utilisateur doivent entrer dans la table des services. Toute aide serait grandement appréciée.comment insérer dans plusieurs tables dans les rails

Merci.

Répondre

6

Vous pouvez ajouter un rappel pour créer un nouveau service lorsqu'un utilisateur est créé.

class User < ActiveRecord::Base 
    def after_create 
     Service.create!(:name => 'my_service_name', :user_id => self.id) 
    end 
end 

La méthode after_create est déclenchée après la création d'un nouvel utilisateur. Ainsi, un nouveau service sera créé chaque fois que vous créez un nouvel utilisateur. Vous pouvez trouver plus d'informations sur les rappels sur le Rails Guides.

+0

Merci mathieu. Tu as sauvé ma journée :) – karthik

3

Vous pouvez également utiliser accept_nested_attributes_for:

class User < ActiveRecord::Base 
    has_one :service 
    accepts_nested_attributes_for :service 
end 

User.create(:name => "Example User", :service_attributes => {:name => "Example Service"}) 

Remplissage dans le hachage service_attributes est fait simple avec des formes imbriquées.

Questions connexes