Я храню сообщения в социальных сетях из REST API в Mongoid.
Я использую очень простую модель пользователя / сообщения:
class Post
include Mongoid::Document
belongs_to :user
end # post
class User
include Mongoid::Document
has_many :posts
end # post
Теперь, скажем, проанализированный JSONОбъект, полученный из API:
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 () только ищет идентификатор?Или find () также загружает весь пользовательский объект?
- Я переопределяю метод Post.create (), чтобы сделать это прямо сейчас.Это плохо?
- Как лучше всего сохранять дочерние объекты?Проверять ли существование пользователя в Post.create ()?Post.before_create ()?Post.after_create ()?Или что-то еще?
- Есть ли разница с p.user.save и User.create (p.user) ??