0

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

我有 3 个模型,[地点、城市和国家/地区] 所有 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)
4

2 回答 2

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'
于 2012-04-07T11:54:10.267 回答
0

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

于 2012-04-07T09:45:02.423 回答