我有3个模特
has_many :places
has_many :reviews, as: :reviewable
具有属性状态的评论我希望能够检查。
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中执行此操作,或者我的第二个选项是将新属性合并到每当发布评论时设置为活动的位置。
答案 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
虽然我偏爱前者。