mongoid与has_many关系的地方

时间:2012-07-21 09:47:26

标签: ruby-on-rails ruby-on-rails-3 mongoid mongoid3

我有3个模特

City.rb

has_many :places

Place.rb

has_many :reviews, as: :reviewable

具有属性状态的评论我希望能够检查。

Review.rb

  belongs_to :reviewable, polymorphic: true
  state_machine :initial => :draft do #etc.

我希望能够调用City.find(“somecity”)。places

并且不是显示所有地方,而是替换默认范围,以仅查找具有“已发布”状态的评论的地方

在activerecord中有类似......

City.find("somecity").places.where('reviews.state' => 'published')

有没有办法在mongoid中执行此操作,或者我的第二个选项是将新属性合并到每当发布评论时设置为活动的位置。

1 个答案:

答案 0 :(得分:4)

如果您发现自己遇到连接问题,您应该考虑对数据进行反规范化。基本上只是在两个地方复制数据,这在SQL Universe中不被认为是好的,但是使用No-SQL它可以处理通常可以执行连接的情况。提高速度,但占用更多空间。

为此你在mongoid中有两颗伟大的宝石:

https://github.com/dzello/mongoid_alize

有关demormalizing的信息,请参阅博文:http://blog.joshdzielak.com/blog/2012/05/03/releasing-mongoid-alize-comprehensive-field-denormalization-for-mongoid/

https://github.com/logandk/mongoid_denormalize

虽然我偏爱前者。