Mongoid has_and_belongs_to_many,inverse_of :: nil,store_as

时间:2013-10-10 00:51:20

标签: ruby mongodb mongoid

在我的代码中,我有一个用户类:

class User
  include Mongoid::Document
  has_and_belongs_to_many :person_record_bookmarks, inverse_of: nil, :class_name => "PersonRecord"
end

现在它将在我的文档中生成person_record_bookmarks_ids。这个名字太长了,有没有办法将它作为短名称存储在数据库中?在嵌入文档中,我们可以使用store_as:,但似乎它不适用于引用。

1 个答案:

答案 0 :(得分:2)

foreign_key就是你要找的东西

class User
  include Mongoid::Document
  has_and_belongs_to_many :person_record_bookmarks, inverse_of: nil, :class_name => "PersonRecord", foreign_key :shorter_name
end

那么您的用户将是:

{...shorter_name:[ObjectId("..."),ObjectId("...")]...}

您可以使用user.shorter_name检索id列表或user.person_record_bookmarks以检索所有PersonRecordBookmarks.where({_ id:{$ in:short_name})