2012-02-23 3 views
0

REST APIからMongoidにソーシャルメディアの投稿を保存しています。私は非常に基本的なユーザー/ Postモデルを使用していMongoidとRailsで外部ネストJSONオブジェクトを解析するときに子オブジェクトを保存する

class Post 
    include Mongoid::Document 
    belongs_to :user 
    end # post 

    class User 
    include Mongoid::Document 
    has_many :posts 
    end # post 

今APIから取得し、解析されたJSONオブジェクトがあるとしましょう:

hash = { 
    "id" : "7890", 
    "text": "I ate foo bar tonight", 
    "user": { 
    "id" : "123", 
    "name" : "beavis" 
    } 
} 
    p = Post.new(hash) 
    p.save 

これは、ように、オブジェクトを保存します。

{ 
     "id" : "7890", 
     "text": "I ate foo bar tonight", 
     "user_id": "123" 
    } 

ここで、ユーザーオブジェクトの保存についてもどうやったらいいですか? p.user.saveは動作しますが、私は知りたがっています...

  1. ユーザオブジェクトがすでにmongodbに入っているかどうかをチェックする必要があります。私はUser.find(p.user.id)を使用しています。しかし、User.find()はIDだけを探しますか?またはfind()もユーザーオブジェクト全体をロードしますか?
  2. これを行うには、Post.create()メソッドをオーバーライドします。それは悪いですか?
  3. 子オブジェクトを保存する最適な場所は何ですか?私はPost.create()でユーザーの存在をチェックしていますか? Post.before_create()? Post.after_create()?または、他の何か?
  4. p.user.saveとUser.create(p.user)との違いはありますか?

答えて

2

accepts_nested_attributes_forを使用できませんか?

class Post 
    include Mongoid::Document 
    belongs_to :user 
    accept_nested_attributes_for :user 
end # post 
+0

申し訳ありません「accept_nested_attributes_for」が正確に何をしているかを調べてから(子供に直接値を割り当てる)、私の必要性のように思えます。ありがとう!! http://www.manas.com.ar/spalladino/2010/03/03/handling-children-with-accepts_nested_attributes_for-in-rails/ – goofrider

関連する問題