Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails mongoid-覆盖现有字段警告_Ruby On Rails_Mongodb_Mongoid - Fatal编程技术网

Ruby on rails mongoid-覆盖现有字段警告

Ruby on rails mongoid-覆盖现有字段警告,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,我只是从mongodb开始。 我有一个rails 4.0应用程序,通过mongoid(4.0.0)使用mongodb 有一个公司模型和一个用户模型。因此,用户属于:公司,公司有许多:用户 当我启动控制台并执行公司操作时。首先,我会创建一个公司。当我做公司。首先。用户第一次我得到: 警告--:覆盖所有字段的现有字段 然后是公司用户的预期 当我第二次这样做时,没有警告,只有公司用户 为什么呢?有什么不对劲吗? 我在Heroku有这个应用程序,同样的情况也发生在那里 谢谢 更新1 这就是模型 clas

我只是从mongodb开始。 我有一个rails 4.0应用程序,通过mongoid(4.0.0)使用mongodb 有一个公司模型和一个用户模型。因此,用户
属于:公司
,公司
有许多:用户

当我启动控制台并执行公司操作时。首先,我会创建一个公司。当我做
公司。首先。用户
第一次我得到:

警告--:覆盖所有字段的现有字段

然后是公司用户的预期

当我第二次这样做时,没有警告,只有公司用户

为什么呢?有什么不对劲吗? 我在Heroku有这个应用程序,同样的情况也发生在那里

谢谢

更新1

这就是模型

class Company
    include Mongoid::Document
    include Mongoid::Timestamps

    field :name
    field :token

    has_many :users
    has_many :feedbacks
    has_many :main_categories
    has_many :departments

end
更新2

实际上,这些警告只在用户模型中出现

User.all
W, [2013-10-05T21:30:34.522867 #23442]  WARN -- : Overwriting existing field email in class User.
W, [2013-10-05T21:30:34.523418 #23442]  WARN -- : Overwriting existing field crypted_password in class User.
W, [2013-10-05T21:30:34.523662 #23442]  WARN -- : Overwriting existing field salt in class User.
W, [2013-10-05T21:30:34.523888 #23442]  WARN -- : Overwriting existing field remember_me_token in class User.
W, [2013-10-05T21:30:34.524129 #23442]  WARN -- : Overwriting existing field remember_me_token_expires_at in class User.
W, [2013-10-05T21:30:34.524367 #23442]  WARN -- : Overwriting existing field reset_password_token in class User.
W, [2013-10-05T21:30:34.524595 #23442]  WARN -- : Overwriting existing field reset_password_token_expires_at in class User.
W, [2013-10-05T21:30:34.524834 #23442]  WARN -- : Overwriting existing field reset_password_email_sent_at in class User.
W, [2013-10-05T21:30:34.525070 #23442]  WARN -- : Overwriting existing field failed_logins_count in class User.
W, [2013-10-05T21:30:34.525319 #23442]  WARN -- : Overwriting existing field last_login_at in class User.
W, [2013-10-05T21:30:34.525546 #23442]  WARN -- : Overwriting existing field last_logout_at in class User.
W, [2013-10-05T21:30:34.525774 #23442]  WARN -- : Overwriting existing field last_activity_at in class User.
 => #<Mongoid::Criteria
  selector: {}
  options:  {}
  class:    User
  embedded: false>

1.9.3p327 :003 > Company.all
 => #<Mongoid::Criteria
  selector: {}
  options:  {}
  class:    Company
  embedded: false>
User.all
W、 [2013-10-05T21:30:34.522867#23442]警告--:覆盖类用户中的现有字段电子邮件。
W、 [2013-10-05T21:30:34.523418#23442]警告--:覆盖类用户中现有字段加密的_密码。
W、 [2013-10-05T21:30:34.523662#23442]警告--:覆盖类用户中的现有字段。
W、 [2013-10-05T21:30:34.523888#23442]警告--:覆盖类用户中的现有字段remember_me_令牌。
W、 [2013-10-05T21:30:34.524129#23442]警告--:在类内用户上覆盖现有字段remember_me_token_expires_。
W、 [2013-10-05T21:30:34.524367#23442]警告--:覆盖类用户中的现有字段重置密码令牌。
W、 [2013-10-05T21:30:34.524595#23442]警告--:在类内用户上覆盖现有字段重置(密码)令牌(过期)。
W、 [2013-10-05T21:30:34.524834#23442]警告--:覆盖现有字段重置密码发送给课堂用户的电子邮件。
W、 [2013-10-05T21:30:34.525070#23442]警告--:覆盖类用户中的现有字段失败。
W、 [2013-10-05T21:30:34.525319#23442]警告--:覆盖类内用户上一次登录时的现有字段。
W、 [2013-10-05T21:30:34.525546#23442]警告--:在类内用户上覆盖现有字段“上次注销”。
W、 [2013-10-05T21:30:34.525774#23442]警告--:在类内用户上覆盖现有字段last_activity_。
=> #
1.9.3p327:003>公司所有
=> #
更新3


这和巫术有关,所以我会和他们核实一下

公司模式是否扩展了另一种模式?此警告用于警告人们子类中正在覆盖的字段。
另外,如果您知道您正在覆盖一个字段,您可以传递一个选项
overwrite:true
,这样警告就不会显示。

出现警告的原因是巫术正在自动将所需字段添加到模型中。因此,巫术需要运行的字段不需要在模型中定义。在我的例子中,模型最终是这样的:

class User
  include Mongoid::Document
  include Mongoid::Timestamps

  authenticates_with_sorcery!

  field :name
  field :surname
  field :role

  belongs_to :company
end 

这是在通过MongoID或MongoMapper使用MongoDB时完成的:

公司模型只是基础模型。它没有扩展任何模型。请参阅原始问题中的更新1。用户模型如何,它是否扩展了任何其他类?不,它所做的唯一特别的事情是使用\u巫术对\u进行身份验证!其他模型也不扩展任何其他类。如更新2中所示,这些警告只影响用户模型