0

mongoはリレーショナルではないので、has_many多相関連で特定の型を見つける方法が不思議です。mongoid where has_many associations

私はすべての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) 
+0

'@のuser.reviews'を使用しないのはなぜ? – MikDiet

+0

申し訳ありませんが、ユーザーモデルではないかどうかはわかりませんが、私はそれを通常どおりに行う方法の例として使用しています(ポリモーフィックではありません) – ere

+0

多態的な関連付けは同様です。だから、 'Place.first.reviews'や' City.first.reviews'を使うことができます。 – MikDiet

答えて

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' 
0

アソシエーションの関連付けをモデルによく定義する場合は、メソッドを呼び出すだけで済みます。