1

2 つのチュートリアルを混在させようとしていますが、うまくいきません。学習用にレールモンゴイドを使用してユーザーとマイクロポストのシステムを作成しようとしています。ユーザー ID はもはや基本的な番号ではなく、代わりに Mongo によって処理され、ランダム ID が作成されるため、問題が発生しました。コードは、ユーザーが持っているマイクロポストを見つけることができないと思います。 user_id は Integer であり、mongo ID のタイプに関係ありません。

編集: 問題のより良い説明: 要するに: ユーザーまたはマイクロポストからユーザー ID にアクセスできないため、各ユーザーには多くのマイクロポストがあり、各マイクロポストはユーザーに属していますが、何をすべきかわからないため機能しません。する、どこに行く、誰が誰であるか。

私はこのチュートリアルに従っています: http://ruby.railstutorial.org/chapters/a-demo-app#top

しかし、いくつか変更しました。MongoDB をサポートするために、このスクリーン キャストと混ぜ合わせました: http://railscasts.com/episodes/238-mongoid

したがって、私が読んでいるセクション (2.3.3 A user has_many microposts) では、各マイクロポストがユーザーに属し、ユーザーが多くのマイクロポストを持っていることがわかります。それは問題ないように思えますが、作成者がコンソールを使用している場所に移動し続けると、私が実行すると空の配列が返されます。

2.0.0p247 :008 > first_user = User.first

MOPED: 127.0.0.1:27017 COMMAND データベース=管理コマンド={:ismaster=>1} (0.4084ms)

MOPED: 127.0.0.1:27017 クエリ データベース=mongo_app_development コレクション=ユーザー セレクター={"$query"=>{}, "$orderby"=>{:_id=>1}} フラグ=[:slave_ok] 制限=-1 skip=0 batch_size=nil fields=nil (0.2954ms)

ユーザー _id: 522e6a7d1d41c86de5000001、名前: "Namedude name"、メール: "thenamedman@gmail.com"> 2.0.0p247 :009 > first_user.microposts

MOPED: 127.0.0.1:27017 QUERY database=mongo_app_development collection=microposts selector={"user_id"=>"522e6a7d1d41c86de5000001"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.3123ms)

=> []

問題は、マイクロポストの user_id フィールドが整数であり、ユーザーと連携していないことだと思いますか? ユーザー ID は _id と呼ばれ、次のようになります: 522e6a7d1d41c86de5000001、これは通常の古い文字列ですか? そして、それを文字列に変更すると何かが起こりますか? つまり、何を探すべきかをどうやって知るのでしょうか? 助けてください、私はRubyがまったく初めてで、Javaから来ました(それもあまり得意ではありません)。

編集: String と Mongo::ObjectID を試してみました

文字列でも同じ結果が得られますが、ObjectID が何であるかがわからないことは大きな問題です。

編集:mongoには独自のオブジェクトIDがあるため、user_idが何であるかは問題ではないことに気づきました。私はそれに依存していると思いますか? しかし、ビューやその他のモデル (マイクロポスト) からはアクセスできません。

4

0 に答える 0