0

ユーザーがデザインや製品を気に入ってもらえるように、thumbs_up gem を使用しています。ユーザー プロファイルでは、ユーザーが気に入ったすべてのデザインと製品を表示しています。現在、デザインと製品を 1 つのビューに連結していますが、デザインと製品の場合は「created_at DESC」で注文されています。ユーザーが投票したときに基づいて注文したいので、ユーザーがデザインに投票すると、最初にプロフィールに表示されます。これが私が持っているコードです

モデルで

def favorites
  Design.joins(:votes).where('voter_id = ?', self.id).where('voteable_type = ?', 'Design').where('vote = ?', true)
end

def favs
  Product.joins(:votes).where('voter_id = ?', self.id).where('voteable_type = ?', 'Product').where('vote = ?', true)
end

コントローラーで

@user = User.find_by_username(params[:id])
@designs = @user.favorites
@products = @user.favs

@favorites = @designs.to_a.concat @products.to_a
@favorites.sort! {|t1, t2| t2.created_at <=> t1.created_at}

それが問題だった場合に備えて、デザインと製品のデフォルトのスコープを削除しましたが、解決しませんでした.

私もこれを試してみましたが、運が悪かったです

Design.joins(:votes).where('voter_id = ?', self.id).where('voteable_type = ?', 'Design').where('vote = ?', true).order('created_at DESC')

各投票に属するタイムスタンプ「created_at」があります。だから私はこれが可能であることを知っています。

4

1 に答える 1