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は動作しますが、私は知りたがっています...
- ユーザオブジェクトがすでにmongodbに入っているかどうかをチェックする必要があります。私はUser.find(p.user.id)を使用しています。しかし、User.find()はIDだけを探しますか?またはfind()もユーザーオブジェクト全体をロードしますか?
- これを行うには、Post.create()メソッドをオーバーライドします。それは悪いですか?
- 子オブジェクトを保存する最適な場所は何ですか?私はPost.create()でユーザーの存在をチェックしていますか? Post.before_create()? Post.after_create()?または、他の何か?
- p.user.saveとUser.create(p.user)との違いはありますか?
申し訳ありません「accept_nested_attributes_for」が正確に何をしているかを調べてから(子供に直接値を割り当てる)、私の必要性のように思えます。ありがとう!! http://www.manas.com.ar/spalladino/2010/03/03/handling-children-with-accepts_nested_attributes_for-in-rails/ – goofrider