Автоестрой по смене рельсов - PullRequest
0 голосов
/ 04 февраля 2012

Например,

class User < ActiveRecord::Base
  has_one :avatar, :dependent => :destroy
end

class Avatar < ActiveRecord::Base
  belongs_to :user
end

Что если у меня есть пользователь с аватаром, а затем сделать что-то вроде

old_avatar = user.avatar
new_avatar = Avatar.new
user.avatar = new_avatar
user.save
old_avatar.destroy

Так что я не хочу делать последнюю команду вручную (уничтожить).Есть ли варианты для has_many для автоматического уничтожения старого объекта?Или многим лучше использовать что-то другое вместо avatar = method?

Спасибо.

1 Ответ

0 голосов
/ 04 февраля 2012

Почему бы не обновить старый аватар вместо создания нового, например:

avatar = Avatar.find_or_initialize_by_user_id(:user_id => user.id)
avatar.attributes = new_attributes
avatar.save

Кроме того, вы можете создать after_save обратный вызов внутри Avatar модели, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...