ユーザーがデザインや製品を気に入ってもらえるように、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」があります。だから私はこれが可能であることを知っています。