用户在rails中的通知

时间:2013-12-27 00:36:19

标签: notifications ruby-on-rails-4

我有一个设计应用程序,包括用户交朋友和用户 有很多帖子,画作,朋友和谈话 模型在

之下
class User < ActiveRecord::Base


  has_many :paintings, :dependent => :destroy
  has_many :sells, :dependent => :destroy
  has_many :posts, :dependent => :destroy
  has_many :talks, :dependent => :destroy
  has_many :friends
  has_many :comments
end

我设置了一个通知系统,当用户创建帖子或绘画e.t.c时 通过public_activity gem,

向用户朋友发送通知

我打算实现的是一个通知系统,在该通知系统中,当创建通知时,所涉及的每个用户都可以标记为已看到,即他们已经看到它以便不再向用户显示通知......并且当用户也是对通知的评论,我希望将通知发送给活动的所有者,以及对该通知发表评论的任何其他用户...在摘要中,我需要一个像宣传系统一样的FACEBOOK ......

1 个答案:

答案 0 :(得分:0)

您是否考虑在添加相关帖子/绘画后创建通知?

将创建通知(可能在每个相关模型上使用after_create操作,例如帖子,绘画)。

class Post < ActiveRecord::Base
 after_create :create_notification

 private

  def create_notification
    # create notification here
  end
end

如果要创建大量通知,那么您可能希望考虑在后台作业中创建它们。

通知属于用户的目标朋友,因此可以通过通知上的属性标记为通知。您可以在通知对象上包含实例方法来处理此问题。

class Notification < ActiveRecord::Base
 belongs_to :user # friend of the originating user

 def mark_seen
   update_attributes(viewed: true)
 end

end

您还可以在通知上添加范围,以确保用户可以轻松查看看不见的通知。

class User < ActiveRecord::Base
  has_many :notifications
  has_many :unseen_notifications, conditions: "notifications.viewed IS false" #or something like that
end

希望这有助于让您走上正确的轨道。