我有一个设计应用程序,包括用户交朋友和用户 有很多帖子,画作,朋友和谈话 模型在
之下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 ......
答案 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
希望这有助于让您走上正确的轨道。