7
在文檔它說,你可以使用inverse_of的權衡:無,但並不能真正說明用例: http://mongoid.org/en/mongoid/docs/relations.html#has_and_belongs_to_many什麼是使用mongoid的has_and_belongs_to_many與inverse_of
我假設它是在的情況下有用一個對象會有很多其他對象,所以你可以完全用inverse_of nil跳過這一邊,並保存一些存儲空間嗎?
因此,例如:
class Post
has_and_belongs_to_many :tags
end
class Tag
has_and_belongs_to_many :posts, inverse_of: nil
end
一個標記可能屬於數百或數千個職位,但職位大概只有5個標籤左右。
那麼這是一個很好的用例嗎?我假設你仍然可以做
tag.posts
等像正常的,主要的權衡是,它從改變查詢:
Post.find(tag.post_ids)
到
Post.where(tag_ids: tag.id)
如果你有一個指數在tag_ids上它似乎仍然相當快。所以也許最好的是這樣的:
class Post
has_and_belongs_to_many :tags, index: true
end
class Tag
has_and_belongs_to_many :posts, inverse_of: nil
end
只是想檢查我的想法。
好的真棒,現在它更有意義,他們單方面意味着什麼 - 你不會在另一邊設置habtm。謝謝@rubish我真的很感激它! –
只是爲了跟進......你知道是否有一種簡單的方法來獲取'Tag'端的訪問器方法設置。我開始定義自己的'def posts','def posts ='等等,但是我意識到有更多像''','push'和after postbacks被post銷燬等等。更簡單的方法。謝謝! –
@BrianArmstrong對不起,但我不知道一個簡單的出路。雖然你可以嘗試mongoid郵件列表。 – rubish