轨道上的红宝石 - 如何获取所有喜欢对象的用户



我有UserCommunity模型。

用户将通过此命令喜欢Community模型

    if current_user.voted_up_on? @community
        current_user.dislikes @community
    else
        current_user.likes @community
    end

我现在正在尝试获取所有喜欢@community的用户。我正在尝试用这个来做到这一点。但它不会返回正确的用户。
我该如何解决这个问题?

@users =  User.where(:id => @community.likes.map(&:voter_id)).order("last_active_at DESC").limit(10)

我为此使用了名为"acts_as_votable"的宝石https://github.com/ryanto/acts_as_votable

这将返回 AR::关系

# Note: I'm not sure that polymorphic fields are: "votable_type" and "votable_id"
class Community
  ...
  def last_liked(limit = 10)
    User.includes(:votes).where(["votes.votable_type = ? AND votes.votable_id = ?", self.class.name, self.id]).order("users.last_active_at DESC").limit(limit)
  end
end

试试这个:

@users = @community.likes.map(&:voter)

相关内容

  • 没有找到相关文章

最新更新