我创建的是我的主题表中的一个“活动”字段,我可以使用它来显示活动主题,它首先包含创建主题的时间,当有人评论时,它将使用 comment.created_at 时间并把它在主题表的活动字段中,就像任何其他论坛系统一样。
我在这里发现了类似的问题 如何按最后评论的日期排序并按最后创建的日期排序?
但它不会对我有用,我不知道为什么它不会。而且我也不明白在这种情况下是否需要使用 counter_cache 。我为我的评论使用了多态关联,因此我不确定如何使用 counter_cache。它在我的主题表中工作正常,可以将 created_at 时间复制到活动字段。但是当我创建评论时它不会工作。
错误:
CommentsController#create 中的 NoMethodError
未定义的方法“主题”
主题.rb
class Topic < ActiveRecord::Base
attr_accessible :body, :forum_id, :title
before_create :init_sort_column
belongs_to :user
belongs_to :forum
validates :forum_id, :body, :title, presence: true
has_many :comments, :as => :commentable
default_scope order: 'topics.created_at DESC'
private
def init_sort_column
self.active = self.created_at || Time.now
end
end
评论.rb
class Comment < ActiveRecord::Base
attr_accessible :body, :commentable_id, :commentable_type, :user_id
belongs_to :user
belongs_to :commentable, :polymorphic => true
before_create :update_parent_sort_column
private
def update_parent_sort_column
self.topic.active = self.created_at if self.topic
end
end