2010-11-12 60 views
2

我是新來的rails(rails 3),我在實踐中學習。Rails,Mongoid,Devise用戶配置文件

我想創建用戶配置文件關係。我用設計創建了一個用戶模型,這很好。然後我創建了一個Profile模型。這個想法是註冊一個用戶和他的個人資料顯示信息,如果用戶想要,完成配置文件。

但是,該配置文件與帖子相關。所以,我需要用用戶的註冊動作創建一個空的配置文件。

我該怎麼做?

我的想法是更改UsersController#create方法來構建空的配置文件,但我不知道如何。

我的模型

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 

一些想法?

回答

2

它看起來像只嵌入一個配置文件(embeds_one:配置文件)。它應該是user.profile,而不是user.profiles。此外,user.profile將返回該文檔的一個實例,而不是許多文檔的數組。

你可以在你的控制器中這樣做。

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

在你看來,你會再顯示

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

你也需要改變

embedded_in :user, :inverse_of => :profiles 

embedded_in :user, :inverse_of => :profile 

要看到,如果用戶有一個配置文件或不,看看user.profile是否返回nil。

+0

謝謝...現在的問題是:我不想在新用戶註冊時創建配置文件..要做到這一點,我需要修改設計用戶創建方法? – matiasfh 2010-11-14 23:36:06

+0

只需致電user.profile.create(:name =>'whatever',:lastname =>'whatever2')創建用戶後。 – 2010-11-15 16:38:53

+0

您能否將此標記爲已回答? – 2010-11-16 21:55:44

相關問題