【发布时间】:2012-06-17 19:21:55
【问题描述】:
我有 2 个对象;
board.rb
class Board
include Mongoid::Document
has_many :posts, :autosave => true, dependent: :destroy
field :collected, :type => Array, :default => []
end
post.rb
class Post
include Mongoid::Document
belongs_to :board
end
除了默认创建的关系,我想创建一个字段来存储或引用父对象(Board)中的帖子。
是否可以创建引用而不需要复制对象?以及默认创建的关系?最好的方法是什么?
创建一个数组字段(collected field)并输入所有帖子的id还是有更好的方法?
我不想要重复的对象,我只想引用原始对象,然后我想通过 where 查询或 find 查询找到该对象。
我该怎么做?
谢谢!
【问题讨论】:
-
为什么需要 post_ids ?
-
我希望用户收集他们板上的原始帖子。我不想在每个用户的板上制作对象的副本。相反,我只想参考将收集帖子的用户板上的原始帖子。
-
我仍然不明白你为什么需要它们,但是用
self.post_ids = Post.where(:board_id => self.id).only(:_id).map(&:_id)重置 post_ids 会比你现在做的更好。 -
非常感谢它对我来说很好用:D 谢谢!
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 mongoid