由于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)
答案 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)
如果你在模型中很好地定义了关联关联,你只需要调用方法。