在我的Rails應用程序中,我有Posts模型,其has_many註釋。Rails 3,在創建記錄時更新控制器中的鏈接模型
每次發佈新評論時,我都希望更新Posts模型中的updated_at列。
我假設我需要在評論控制器的創建方法中執行此操作。
有沒有人有一些想法做到這一點的具體方式?
@post = Post.find_by_id(@comment.post_id)
@post.save!
沒有工作。
謝謝!
-Elliot
在我的Rails應用程序中,我有Posts模型,其has_many註釋。Rails 3,在創建記錄時更新控制器中的鏈接模型
每次發佈新評論時,我都希望更新Posts模型中的updated_at列。
我假設我需要在評論控制器的創建方法中執行此操作。
有沒有人有一些想法做到這一點的具體方式?
@post = Post.find_by_id(@comment.post_id)
@post.save!
沒有工作。
謝謝!
-Elliot
您可以使用:觸摸awesomess更新的updated_at
所以,如果你有
class Post
has_many :comments
end
class Comment
belongs_to :post, :touch=>true
end
然後當你保存評論時,它會觸及帖子並更新updated_at。
更多的相關信息:
不錯:)我從來不知道這個選項存在! – 2011-01-22 19:16:04
你要儘可能的保持了控制器。控制器僅用於將用戶輸入和輸出引導至正確的位置。
此外,您不希望從Comment中調用self.post.update_attributes,因爲這會綁定太多的Post-specific細節。
# 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
我會實現它在你的commment模型
class Comment < ActiveRecord::Base
belongs_to :post
def after_create
post.update_attribute(:updated_at, Time.now)
end
end
作爲一個側面說明,您的代碼段不更新後的的updated_at屬性的原因是由於部分更新:http://ryandaigle.com/articles/2008/4/1/what-s-new-in-edge-rails-partial-updates – 2011-01-22 19:19:59