Rails 3,在记录创建时更新控制器中的链接模型

时间:2011-01-22 19:08:43

标签: ruby-on-rails ruby ruby-on-rails-3

在我的rails应用程序中,我有帖子模型,其中有很多评论。

每次发布​​新评论时,我都希望更新帖子模型中的updated_at列。

我假设我需要在Comments控制器的create方法中执行此操作。

有没有人知道具体的方法呢?

   @post = Post.find_by_id(@comment.post_id)
   @post.save!

没用。

谢谢!

-Elliot

3 个答案:

答案 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