ruby-on-rails-3 – 在Rails 3中创建新闻源
我想在我的rails应用程序中根据最近的文章和评论创建一个活动源.它们是两种不同类型的activerecord(它们的表结构不同).
理想情况下,我可以创建一个混合的文章和评论数组,然后按相反的时间顺序显示它们. 所以,我可以弄清楚如何得到一个文章和评论的数组,然后将它们合并在一起并按created_at排序,但我很确定,一旦我开始使用分页,它将无法正常工作. 有没有办法创建一个像创建混合数组的东西? 对我来说其他问题之一是它可能是所有文章,它可能是所有评论或两者之间的某种组合.所以我不能只说我将接受最后15篇文章和最后15篇评论. 关于如何解决这个问题的任何想法? 解决方法
当我
done this before时,我通过使用非规范化的UserActivity模型或者类似于与ActivitySource的belongs_to多态关联来管理它 – 它可以是您想要显示的任何类型的内容(帖子,评论,投票,喜欢,随你…).
然后,当创建要显示的任何实体时,您有一个Observer,它会在UserActivity表中触发并创建一行,并带有指向该记录的链接. 然后,要显示列表,您只需通过created_at descending查询UserActivity排序,然后浏览多态activity_source关联以获取内容数据.然后,您需要在视图模板中使用一些智能来呈现评论和帖子以及其他不同的方式. 例如.就像是… user_activity.rb: class UserActivity < ActiveRecord::Base belongs_to :activity_source,:polymorphic => true # awesomeness continues here... end comment.rb(post / whatever) class Comment < ActiveRecord::Base # comment awesomeness here... end activity_source_observer.rb class ActivitySourceObserver < ActiveRecord::Observer observe :comment,:post def after_create(activity_source) UserActivity.create!( :user => activity_source.user,:activity_source_id => activity_source.id,:activity_source_type => activity_source.class.to_s,:created_at => activity_source.created_at,:updated_at => activity_source.updated_at) end def before_destroy(activity_source) UserActivity.destroy_all(:activity_source_id => activity_source.id) end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |