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 に答える