【问题标题】:The loading another class has side effect with mongoid加载另一个类对 mongoid 有副作用
【发布时间】:2013-11-21 15:50:58
【问题描述】:

谁能给我解释一下:

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

从那时起,对 User 的 mongoid 操作将无法正常工作......

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

【问题讨论】:

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


    【解决方案1】:

    看来副作用是共同祖先造成的。

    没有共同祖先,一切都应该如此。

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

    【讨论】:

      猜你喜欢
      • 2014-03-02
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2019-05-16
      相关资源
      最近更新 更多