/ / Nakladanie inej triedy má pri mongoidoch vedľajší efekt - rubín-on-rails, rubín, rubín-on-rails-4, mongoid, mongoid3

Nakladanie inej triedy má vedľajší účinok pri mongoidoch - ruby-on-rails, rubín, ruby-on-rails-4, mongoid, mongoid3

Môže mi niekto vysvetliť toto:

User < AbstractUser
store_in collection: "users"

InvitedUser < AbstractUser
store_in collection: "invited_users"

Potom, keď načítavam InvitedUser pri práci s objektom používateľa, mám nasledujúci vedľajší účinok.

[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">

A odvtedy mongoidné operácie na Používateľovi nebudú fungovať správne ...

Tiež som nahlásil problém na stránkach github: https://github.com/mongoid/mongoid/issues/3408

odpovede:

0 pre odpoveď č. 1

Zdá sa, že vedľajší účinok je spôsobený spoločným predkom.

Bez spoločného predka je všetko tak, ako má byť.

=> 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

U spoločného predka sa objaví vedľajší účinok

→ ./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)>