mongoid在哪里有has_many关联

时间:2012-04-06 15:16:57

标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid polymorphic-associations

由于mongo不是关系型的,我想知道如何在has_many多态关联中找到特定类型。

我有3个型号,[Place,City,&国家]所有3可以有评论(多态)

如何使用特定模型关联返回所有评论?我知道如何在一个简单的has_many关联上进行,但不是在多态的关联上?

通常我会做这样的事情:

  @user = User.where(username: params[:user]).first
  @user ? @reviews = @reviews.where(user_id: @user.id) : @reviews = nil

但是对于多态关联,我迷失了?

#@reviews = params[:review_type].constantize if params[:review_type].present? #@reviews.reviewable.where(review_type: params[:review_type])

@reviews = Review.order_by([:updated_at, :desc]).page(params[:page])#.order(sort_column + " " + sort_direction)

2 个答案:

答案 0 :(得分:1)

我假设你的多态关系被命名为reviewable你可以按照这样的关联类型查询你的评论:

Review.where(:reviewable_type => "Place") # Returns all reviews for 'places'
Review.where(:reviewable_type => "City") # Returns all reviews for 'cities'
Review.where(:reviewable_type => "Country") # Returns all reviews for 'countries'

答案 1 :(得分:0)

如果你在模型中很好地定义了关联关联,你只需要调用方法。