0

我正在使用 Ruby Gem 'Socialization',在我的模型上做一些跟随/喜欢的事情。

场景:用户可以关注一个主题,通过该主题,用户可以检索到给定主题下的所有文章。所以,我真的不知道如何使用 gem 提供的方法来做到这一点。所以我尝试在用户模型中制作自己的方法。

class User < ActiveRecord::Base
  ..

  acts_as_follower
  acts_as_liker

  def get_subjects
    follows = self.follows

    f = []

    follows.each do |follow|
      f << follow.followable
    end

    return f
  end

  def get_articles
    subjects = self.get_subjects

    a = []

    subjects.each do |subject|
      if subject.articles.count > 0
        a << subject.articles
      end
    end

    return a
  end

..
end

我在这里要做的是根据用户关注的主题找到用户感兴趣的文章。

这可能工作正常,但我相信它可以做得更好。有人可以在这里指导我吗?

谢谢,奥卢夫。

4

1 回答 1

1

也许这个简单的解决方案是合适的?

在主体模型中:

has_many :articles

在用户模型中:

has_many :subjects
has_many :articles, through: :subjects

之后,用户有一个方法articles

@user.articles
于 2013-01-27T21:42:26.917 回答