首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蒙古references_and_referenced_in_many

蒙古references_and_referenced_in_many
EN

Stack Overflow用户
提问于 2011-03-25 02:56:49
回答 1查看 1K关注 0票数 1

我有个奇怪的问题。我对蒙古人很陌生,所以我很难判断是我还是蒙古人的错。展示我的代码也许是最好的解释(减去字段/验证/等等)。

代码语言:javascript
复制
class User
  include Mongoid::Document
  embeds_one  :profile, :class_name => "UserProfile"
  references_and_referenced_in_many :roles
end

class UserProfile
  include Mongoid::Document
  embedded_in :user
end

class Role
  include Mongoid::Document
  references_and_referenced_in_many :users
end

在下面的关联中,当我创建这样的对象的实例时.

代码语言:javascript
复制
user = User.new :username => 'username',
                :email => 'user@domain.com',
                :password => 'password'
user.build_profile  :first_name => 'John',
                    :last_name => 'Doe',
                    :birthday => Date.new(1980, 1, 1)
user.roles << Role.new(:name => 'Administrator')
user.save

...i可以使用User.firstuser查看此用户。

...i可以使用User.first.profileuser.profile查看配置文件

...i可以用user.roles查看角色,但我不能用User.first.roles查看角色。

另一件奇怪的事情是,user.roles.countUser.first.roles.count都返回0,尽管当我查看user.roles时,它返回[#<Role _id: 4d8c0173e1607cdeae00002c, name: "Administrator", user_ids: [BSON::ObjectId('4d8c0173e1607cdeae00002a')]>]。(User.first.roles返回一个空数组)

这好像是个虫子。

EN

回答 1

Stack Overflow用户

发布于 2011-03-25 07:34:07

对关系关联使用:autosave => true

代码语言:javascript
复制
references_and_referenced_in_many :roles, :autosave => true

或者可以显式地将role保存为

代码语言:javascript
复制
role = Role.new(:name => 'Administrator')
user.roles << role
role.save
user.save

这是由于mongoid.2.0.0.rc.1 +列出的这里发生了变化。

关系关联在创建父关系时不再自动保存。以前,加载了references_many或references_one关联的新文档的保存会将关系保存在第一次保存上。为了恢复此功能,必须向宏提供一个:autosave =>真选项(这仅适用于references_many和references_one)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5428063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档