我有个奇怪的问题。我对蒙古人很陌生,所以我很难判断是我还是蒙古人的错。展示我的代码也许是最好的解释(减去字段/验证/等等)。
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在下面的关联中,当我创建这样的对象的实例时.
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.first或user查看此用户。
...i可以使用User.first.profile和user.profile查看配置文件
...i可以用user.roles查看角色,但我不能用User.first.roles查看角色。
另一件奇怪的事情是,user.roles.count和User.first.roles.count都返回0,尽管当我查看user.roles时,它返回[#<Role _id: 4d8c0173e1607cdeae00002c, name: "Administrator", user_ids: [BSON::ObjectId('4d8c0173e1607cdeae00002a')]>]。(User.first.roles返回一个空数组)
这好像是个虫子。
发布于 2011-03-25 07:34:07
对关系关联使用:autosave => true
references_and_referenced_in_many :roles, :autosave => true或者可以显式地将role保存为
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)
https://stackoverflow.com/questions/5428063
复制相似问题