Ruby on rails 随着时间的推移跟踪追随者
我想在我的Rails应用程序中构建能够显示随时间变化趋势的功能 目前,我的following方法涉及创建和销毁关系对象——following创建一个具有跟随者ID的对象,following和unfollowing删除该关系对象 由于relationship对象在unfollow时被删除,因此不可能回过头来查看在任何给定时间存在多少追随者 要解决这个问题,我能想到的最佳解决方案是: 与其在展开后删除关系对象,不如创建一个负值为-1的新对象。下面将创建一个正值为+1的对象。因此,将给定对的总值相加将得出它们当前是否遵循(1或0),而历史趋势也可以通过将给定对的总遵循值相加来计算 我的问题是:这是这个问题最优雅的解决方案吗?有更简单的方法吗?我意识到可以使用cron作业来输出每日数字,但这似乎会复制数据。还有其他建议吗Ruby on rails 随着时间的推移跟踪追随者,ruby-on-rails,ruby-on-rails-3,database-design,Ruby On Rails,Ruby On Rails 3,Database Design,我想在我的Rails应用程序中构建能够显示随时间变化趋势的功能 目前,我的following方法涉及创建和销毁关系对象——following创建一个具有跟随者ID的对象,following和unfollowing删除该关系对象 由于relationship对象在unfollow时被删除,因此不可能回过头来查看在任何给定时间存在多少追随者 要解决这个问题,我能想到的最佳解决方案是: 与其在展开后删除关系对象,不如创建一个负值为-1的新对象。下面将创建一个正值为+1的对象。因此,将给定对的总值相加将
任何帮助都将不胜感激 我会添加一个活动字段,然后将记录设置为非活动,而不是删除关系记录。然后,您必须更新所有面向用户的查询,以反映active=1。然后,您可以将active=0的记录用于报告目的。您还可以添加一个停用的_at字段,该字段存储记录停用的日期 一个示例场景是用户1跟随用户2,跟随用户3,跟随用户4,取消跟随用户2,重新跟随用户2,取消跟随用户4
follower_id followed_id active created_at deactivated_at
1 2 0 9/10/2012 9/13/2012
1 3 1 9/10/2012 NULL
1 4 0 9/10/2012 9/17/2012
1 2 1 9/16/2012 NULL
只需使用妄想症
我喜欢这个想法(对大多数人来说,这可能是最好的解决方案),但我尽量避免使用第三方gems。。。我用过的一些插件落后了,后来又破坏了我的应用程序,它们的文档太差了,我无法接受。当然,你必须仔细选择你使用的插件,但不要重新发明轮子<代码>偏执狂是48行代码,所以你可以在需要的时候破解它。没错,我会看看它,看看我是否可以使用它的某些部分来满足我的需要。我也在投票支持你的答案!我认为这是限制数据库条目并保留其功能的最好方法。谢谢为什么您需要处于活动状态和非活动状态的_?
class Relationship < ActiveRecord::Base
acts_as_paranoid
...
end
def currently_following_count(uid)
Relationship.where(:followed_id => uid).count
end
def historical_following_count(uid)
Relationship.unscoped.where(:followed_id => uid).count
end