我创建的是主题表中的“有效”字段,我可以用它来显示有效主题,其中首先包含主题已创建,当有人评论它将使用comment.created_at时间并将其放在主题表中的活动字段中,就像任何其他论坛系统一样。
我在这里发现了类似的问题 How to order by the date of the last comment and sort by last created otherwise?
但它不适合我,我不知道为什么它不会。而且我也不明白我是否需要在这种情况下使用counter_cache。我使用多态关联作为我的评论,因此我不知道如何使用counter_cache。它在我的主题表中正常工作,将created_at时间复制到活动字段。但是当我创建评论时它不会起作用。
错误:
的未定义方法`主题'
Topic.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
Comment.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
答案 0 :(得分:0)
没有意识到你正在使用多态关联。使用以下内容:
def update_parent_sort_column
commentable.active = created_at if commentable.is_a?(Topic)
commentable.save!
end
应该做的伎俩。