加载另一个类有mongoid的副作用

时间:2013-11-21 15:50:59

标签: ruby-on-rails ruby ruby-on-rails-4 mongoid mongoid3

有人可以解释一下:

User < AbstractUser
  store_in collection: 'users'

InvitedUser < AbstractUser
  store_in collection: 'invited_users'

然后当我在处理用户对象时加载InvitedUser时,我有以下副作用。

[3] pry(#<UserInvitationsController>)> User.collection
=> #<Moped::Collection:0x007f8f008f21e0
  ...
@name="users">
[4] pry(#<UserInvitationsController>)> InvitedUser
=> false
[5] pry(#<UserInvitationsController>)> User.collection
=> #<Moped::Collection:0x007f8f00202d30
@name="invited_users">

从那时起,用户上的mongoid操作将无法正常工作......

我还在github上报告了一个问题: https://github.com/mongoid/mongoid/issues/3408

1 个答案:

答案 0 :(得分:0)

似乎副作用是由共同的祖先引起的。

没有共同的祖先,一切都应该是这样。

=> User
[2] pry(main)> User.collection.name
=> "users"
[3] pry(main)> InvitedUser.collection.name
=> "invited_users"
[4] pry(main)> User.collection.name
=> "users"
[5] pry(main)> InvitedUser.collection.name
=> "invited_users"
[6] pry(main)> exit

对于共同的祖先,会出现副作用

→ ./bin/rails c
Loading development environment (Rails 4.0.0)
[1] pry(main)> User.collection.name
=> "users"
[2] pry(main)> InvitedUser.collection.name
=> "invited_users"
[3] pry(main)> User.collection.name
=> "invited_users"
[4] pry(main)> InvitedUser.collection.name
=> "invited_users"
[5] pry(main)>