在我的rails应用程序中,我有帖子模型,其中有很多评论。
每次发布新评论时,我都希望更新帖子模型中的updated_at列。
我假设我需要在Comments控制器的create方法中执行此操作。
有没有人知道具体的方法呢?
@post = Post.find_by_id(@comment.post_id)
@post.save!
没用。
谢谢!
-Elliot
答案 0 :(得分:4)
您可以使用:touch awesomess来更新updated_at
所以,如果你有
class Post
has_many :comments
end
class Comment
belongs_to :post, :touch=>true
end
然后当您保存评论时,它会触摸帖子并更新updated_at。
更多信息:
答案 1 :(得分:1)
我会在你的通讯模型中实现它
class Comment < ActiveRecord::Base
belongs_to :post
def after_create
post.update_attribute(:updated_at, Time.now)
end
end
答案 2 :(得分:0)
您希望尽可能多地保留控制器。控制器仅用于将用户输入和输出定向到正确的位置。
此外,您不希望从Comment中调用self.post.update_attributes,因为这会占用过多的Post特定细节。
# in comment.rb
after_save :update_post_activity
def update_post_activity
self.post.update_activity if self.post?
end
# in post.rb
def update_activity
self.update_attributes(:updated_at => Time.now)
end