Rails 3, обновление связанной модели в контроллере при создании записи - PullRequest
1 голос
/ 22 января 2011

В моем приложении rails есть модель Posts, которая имеет комментарии__1001 *.

Каждый раз, когда публикуется новый комментарий, я бы хотел, чтобы столбец updated_at в модели сообщений обновлялся.

Полагаю, мне нужно сделать это в методе создания контроллера Comments.

Кто-нибудь имеет представление о конкретном способе сделать это?

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

Не работает.

Спасибо!

-Elliot

Ответы [ 3 ]

4 голосов
/ 22 января 2011

Вы можете использовать: touch awesomess для обновления updated_at

Так что, если у вас есть

class Post
  has_many :comments
end

class Comment
  belongs_to :post, :touch=>true
end

Затем, когда вы сохраните комментарий, он коснется сообщения и обновит updated_at.

Больше информации:

1 голос
/ 22 января 2011

Я бы реализовал это в вашей модели комментария

class Comment < ActiveRecord::Base
  belongs_to :post

  def after_create
    post.update_attribute(:updated_at, Time.now)
  end
end
0 голосов
/ 22 января 2011

Вы хотите сохранить как можно больше от контроллера. Контроллер предназначен только для направления пользовательского ввода и вывода в нужные места.

Кроме того, вы не хотели бы вызывать self.post.update_attributes из комментария, потому что это связывало бы слишком много пост-специфических деталей.

# 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...