我有两种模式:
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]
虽然最大的问题是为什么这些文档不同步,但现在我需要知道如何同步它们。
提前致谢,
维克多
答案 0 :(得分:0)
我找到了为什么文件不同步。我在新用户对象中设置了组(未保留):
group = Group.last
user = User.new
user.groups = [group]
user.save
根据mongoid docs,它将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