0

Ruby Gem の「Socialization」を使用して、モデルでフォロー/ライクを行っています。

シナリオ: ユーザーは件名をフォローでき、件名によって、ユーザーは特定の件名の下にあるすべての記事を取得できます。だから、宝石が提供するメソッドでこれを行う方法を本当に理解できませんでした。そこで、ユーザーモデルで独自のメソッドを作成してみました。

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