我是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
有些想法?
答案 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。