質問

私はmongomapper団体と問題を抱えています。私は1つのクラス名のユーザーと他の名前付きのモデルを持っています。ユーザーは、多くのモデルを持っていますが...。

user = User.first
=> <User ...
user.models
=> []
Model.find_by_user_id(user.id.to_s)
=> <Model ...
Model.find_by_user_id(user.id.to_s).user == user
=> true

クラスコード(簡体字):

class User
  include MongoMapper::Document

  # some keys definition

  many :models
end

class Model
  include MongoMapper::Document

  # some keys definitions

  belongs_to :user
end

私が間違って何をしているのですか?

役に立ちましたか?

解決

MMは、もはやFK列の文字列形式を使用していることを表示されませんので、

Model.find_by_user_id(user.id.to_s)

でなければなりません。

Model.find_by_user_id(user.id)

また、Model.user_id列のデータ型に設定されるべきである

key :user_id, Mongo::ObjectID

私はこの問題に遭遇したとき、私はそれは私が文字列としてのuser_idているために使用される他の言葉でワーク・してもらうために、私のコレクションを削除して再作成しなければならなかったが、私は再建されたときに、私はそれを切り替えたときにそれが唯一の「取る」でしょう私のデータベース。それは十分に簡単だったので、幸いにも私は、テストデータで働いています。

他のヒント

あなたは、エラーまたは例外のどのような種類を得ていますか?あなたが投稿コードが正常に見える。

ああ、これは悪いミリメートルのドキュメントに記載されています。あなたはここにこれを実行する必要があります:

class User
  include MongoMapper::Document

  # some keys definition

  many :models, :in => :model_ids
end

class Model
  include MongoMapper::Document

  # some keys definitions
  # no belongs_to necessary here
end

あなたは、その後経由でユーザーにモデルを追加することができます:

# use an existing object
u = User.create ...
m = Model.create ...

# and add the model to the user
u.models << m

# don't forget to save
u.save

# you can then check if it worked like so:
# u.model_ids  => [ BSON::ID 'your user id']

助け希望。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top