用户有很多帖子,帖子属于用户。两者都有一个位置。我想存储每个帖子的位置,并使用最新的帖子位置更新用户位置。 After_save是要走的路吗?我对Mongo DB非常缺乏经验。
发布模型
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)
答案 0 :(得分:1)
应该这样做,你尝试过什么吗?顺便说一下,这实际上是一个Mongoid特定的问题,与MongoDB本身并不相关。
def update_user_location
self.user.location = self.location
self.user.save
end
答案 1 :(得分:0)
这应该有效:
def update_user_location
self._parent.location = self.location
self._parent.save
end
但是我想我已经注意到一个错误,如果你的父模型(User)有一些before_save函数,self._parent.save没有效果......我已经遇到过两次这样的情况了,找不到任何解释它
亚历