【问题标题】:Rails, Mongoid, Devise User profilesRails、Mongoid、Devise 用户配置文件
【发布时间】:2010-11-12 19:36:25
【问题描述】:

我是 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

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    您似乎只嵌入了一个配置文件 (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。

    【讨论】:

    • 谢谢...现在的问题是:我不想在新用户注册时创建配置文件.. 为此我需要修改设计用户创建方法? ..
    • 创建用户后只需调用 user.profile.create(:name => 'whatever', :lastname => 'whatever2')。
    • 我该怎么做?我找不到这个选项xD
    猜你喜欢
    • 2013-02-05
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 2012-08-02
    • 2019-02-03
    相关资源
    最近更新 更多