Czy ktoś może mi to wyjaśnić:
User < AbstractUser
store_in collection: "users"
InvitedUser < AbstractUser
store_in collection: "invited_users"
Następnie podczas ładowania InvitedUser podczas pracy z obiektem użytkownika mam następujący efekt uboczny.
[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">
Od tego momentu operacje mongoid na użytkowniku nie działały poprawnie
Zgłosiłem również problem na github: https://github.com/mongoid/mongoid/issues/3408
Odpowiedzi:
0 dla odpowiedzi № 1Wydaje się, że efekt uboczny jest spowodowany przez wspólnego przodka.
Bez wspólnego przodka wszystko jest jak powinno.
=> 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
W przypadku wspólnego przodka pojawia się efekt uboczny
→ ./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)>