用的 3.4 版,我测试从 pgsql 直接导入 50 万的帖子,全是 topic。成功后发现帖子列表包括社区首页的显示是按照 topicid 的数值从小到大排列显示的,反而后台的主题列表顺序正常,是按照 topicid 从大到小排列显示,这个是什么原因?我没有改动程序代码,我想前台显示的顺序和后台一样该怎么做?
还有我发现首页的显示页数只有 60 页,ruby china 的首页显示页数也只有 60 页,但具体到每个节点显示的页数是正常的,是有意这样的吗?
多谢!
话题排序是按照 last_active_mark 来排列的,它存在的意义是让一定时间范围内有新回复的主题可以排到前面。
last_active_mark
所以你导入数据的时候,需要把创建时间转为 Unix Timestamp 存入 topics.last_active_mark 字段
Unix Timestamp
topics.last_active_mark
我再测试下,非常感谢您的答复。那那个首页只显示分页最大 60 页的显示是故意为之的?
查看下 /app/models/topic.rb #111
def self.total_pages return @total_pages if defined? @total_pages total_count = Rails.cache.fetch("topics/total_count", expires_in: 1.week) do self.unscoped.count end if total_count >= 1500 @total_pages = 60 end @total_pages end
了解了,感谢!
然后第一个是 /app/controllers/topics_controller.rb #17
@topics = topics_scope.without_suggest.last_actived.page(params[:page])
/app/models/topic.rb #26
# scopes scope :last_actived, -> { order(last_active_mark: :desc) }
@huacnlee 我重新把 unix timestamp 加进去就好了,谢谢!