2010-11-12 5 views
2

Je suis nouveau sur les rails (rails 3) et j'apprends en pratique.Rails, Mongoid, Devise Profils d'utilisateurs

Je souhaite créer une relation de profil utilisateur. J'ai créé un modèle d'utilisateur avec devise, et cela fonctionne bien. Ensuite, j'ai créé un modèle de profil. L'idée est d'enregistrer un utilisateur et le spectacle des informations sur son profil et si l'utilisateur le souhaite, complétez le profil.

Mais, le profil est associé à des publications. Donc, j'ai besoin de créer un profil vide avec l'action de registre de l'utilisateur.

Comment puis-je faire cela?

Mon idée est de changer la méthode usersController # create pour construire le profil vide, mais je ne sais pas comment.

Mes modèles

class User 
    include Mongoid::Document 
    devise :database_authenticatable, :registerable, :token_authenticable,   
      :omniauthable, 
      :recoverable, :rememberable, :trackable, :validatable 
    field :username 
    key :username 
    embeds_one :profile 
    attr_accessible :username,:password,:password_confirmation,:remember_me 

class Profile 
    include Mongoid::Document 
    field :name 
    field :lastname 
    ... 
    ... 
    embedded_in :user, :inverse_of => :profiles 
    referenced_many :posts 

Une certaine idée?

Répondre

2

Il semble que vous n'embrassiez qu'un seul profil (embeds_one: profile). Il devrait être user.profile, pas user.profiles. En outre, user.profile renverra une instance de ce document, pas un tableau de nombreux documents.

Vous pourriez faire quelque chose comme ceci dans votre contrôleur.

user.profile.create(... put any params here ...) 

À votre avis, vous affichera alors

<h2>Welcome <%[email protected] %></h2> 

Vous devez également modifier

embedded_in :user, :inverse_of => :profiles 

à

embedded_in :user, :inverse_of => :profile 

Pour voir si l'utilisateur a un profil ou pas, juste voir si user.profile renvoie zéro.

+0

Merci ... maintenant le problème est: je ne veux pas créer le profil à temps pour l'inscription de nouveaux utilisateurs .. pour ce faire, j'ai besoin de modifier la méthode de création de l'utilisateur de concevoir? – matiasfh

+0

user.profile.create (: name => 'whatever',: lastname => 'whatever2') après avoir créé l'utilisateur. –

+0

Pouvez-vous s'il vous plaît marquer comme réponse? –

Questions connexes