Обновите родительскую модель на child after_save, используя Mongo - PullRequest
1 голос
/ 23 июня 2011

У пользователя много сообщений, и сообщение принадлежит_ пользователю. Оба имеют местоположение. Я хотел бы сохранить местоположение для каждого сообщения и обновить местоположение пользователя с самым последним местоположением сообщения. After_save путь? Я очень неопытен с БД Монго.

Почтовая модель

class Post
  include Mongoid::Document
  belongs_to :user

  after_save :update_user_location
  field :location, :type => String

  def update_user_location
     #update user's location
  end
end

Модель пользователя

class User
  include Mongoid::Document

  has_many :posts
  field :location, :type => String
end

(Пожалуйста, не говорите, чтобы просто получить самое последнее местоположение сообщения, мне нужно хранить его отдельно по причине ... thx)

Ответы [ 2 ]

1 голос
/ 23 июня 2011

Это должно сделать это, вы пробовали что-нибудь?Кстати, это действительно специфичный для Mongoid вопрос, не связанный с самим MongoDB.

def update_user_location
    self.user.location = self.location
    self.user.save
end
0 голосов
/ 26 июня 2011

Это должно работать:

def update_user_location
    self._parent.location = self.location
    self._parent.save
end

Однако я думаю, что заметил ошибку, если у вашей родительской модели (Пользователь) есть какая-то функция before_save, self._parent.save не эффективен ... IЯ уже дважды сталкивался с этим случаем и не мог найти объяснения этому.

Alex

...