3

私はmongodbから始めたばかりです。mongoid (4.0.0) 経由で mongodb を使用する Rails 4.0 アプリがあります。Company モデルと User モデルがあります。ユーザーbelongs_to :companyと会社has_many :users

コンソールを起動すると、Company.first作成した会社が表示されます。私がCompany.first.users 初めて取得するとき:

WARN -- : Overwriting existing fieldすべてのフィールドに。

そして、やはり企業ユーザー。

2 度目に実行すると、警告は表示されず、会社のユーザーだけが表示されます。

何故ですか?何か問題がありますか?私は 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 モデルでのみ発生します

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>

アップデート 3

ソーサリー関連なので確認してみます。

4

2 に答える 2

2

警告の理由は、Sorcery が必要なフィールドをモデルに自動的に追加しているためです。したがって、ソーサリーが機能するために必要なフィールドは、モデルで定義する必要はありません。私の場合、これはモデルが最終的にどのように見えるかです:

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

  authenticates_with_sorcery!

  field :name
  field :surname
  field :role

  belongs_to :company
end 

これは、MongoID または MongoMapper 経由で MongoDB を使用する場合に行われます: https://github.com/NoamB/sorcery/blob/master/lib/sorcery/model.rb#L57

于 2013-10-22T06:00:55.030 に答える