1

我有两个模型:

class User
  ...
  has_and_belongs_to_many :groups
  ...
end

class Group
  ...
  has_and_belongs_to_many :users
  ...
end

由于某种原因,组对象没有所有的user_ids. 也许,因为我使用的是 mongoid 4 alpha 版本。

Group _id: 123, user_ids: [1, 2, 4]
User _id: 3, group_ids: [123, 456]

尽管最大的问题是为什么这些文档不同步,但现在我需要知道如何同步它们。

提前致谢,

胜利者

4

1 回答 1

0

我找到了为什么文件不同步的原因。我在一个新的用户对象中设置组(不持久):

group = Group.last
user = User.new
user.groups = [group]
user.save

根据mongoid 文档,它将 group_ids 存储在user但不存储在group

Model#{name}= 设置相关文件。如果父文档被持久化,则子文档将立即与父文档一起保存,以保持密钥一致。如果设置为 nil 或 [] 则子元素将被删除。

要解决我在保存用户后保存组的问题:group.save

鉴于我只有一个组并且用户现在被保留,我执行了以下 rake 任务来同步数据:

users = User.in(group_ids: group.id)

users.each do |user|
  g = user.groups.first
  user.groups = [g]
  user.save
end
于 2014-03-25T15:54:12.363 回答