Rails,Mongoid,Devise用户个人资料

时间:2010-11-12 19:36:25

标签: ruby-on-rails-3 devise mongoid

我是rails(rails 3)的新手,我正在练习。

我想创建用户个人资料关系。我已经创建了一个带有设计的用户模型,并且运行良好。然后我创建了一个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

有些想法?

1 个答案:

答案 0 :(得分:2)

看起来您只嵌入了一个配置文件(embeds_one:profile)。它应该是user.profile,而不是user.profiles。此外,user.profile将返回该文档的实例,而不是许多文档的数组。

您可以在控制器中执行类似的操作。

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

在您的视图中,您将显示

<h2>Welcome <%=@user.profile.username %></h2>

您还需要更改

embedded_in :user, :inverse_of => :profiles

embedded_in :user, :inverse_of => :profile

要查看用户是否有个人资料,只需查看user.profile是否返回nil。