【问题标题】:what is the best way for reference id of child object in parent object in mongoid?mongoid 中父对象中子对象引用 id 的最佳方法是什么?
【发布时间】: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


【解决方案1】:

Board 对象将使用数组响应posts。如果您想要一个仅包含引用对象 ID 的数组,请调用:board.posts.collect {|p| p.id}。如果您需要经常使用它,您可以在模型中定义一个返回它的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2020-06-27
    • 2014-01-17
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2018-03-04
    相关资源
    最近更新 更多