我为我的应用设置了友情模型,
belongs_to :user
belongs_to :friend, :class_name => "User"
模型看起来像这样,
has_many :friendships
has_many :friends, :through => :friendships
has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id"
has_many :inverse_friends, :through => :inverse_friendships, :source => :user
这是我的用户模型,
include PublicActivity::Model
tracked owner: -> (controller, model) { controller && controller.current_user }
tracked :params => {
:title => :get_title,
:poster => :get_poster
}
has_and_belongs_to_many :users
我用Public Activity gem跟踪了我的电影模型,
{{1}}
目前的情况是,当用户向应用添加活动时,每个其他用户都会看到该通知。我想要的是只将活动发送给用户的朋友。
我认为所有必要的数据和链接都已预设,但我不确定如何将其全部挂钩。
答案 0 :(得分:1)
我认为你必须通过custom activity来做到这一点。 例如,
创建新电影时,您可以使用回调方法
创建活动after_create :create_activity
def create_activity
user.friends.each do |friend|
self.create_activity action: :new , parameters: {title:title,poster:poster}, recipient: friend, owner: current_user
end
end
然而,这种解决方案效率很低。我不确定是否为gem提供了一个方法,你可以一起创建多个活动,比如ActiveRecord,Moview.create([{title:1},{title:2}])。否则,很多人都希望将其转移到后台工作中,例如sidekiq。