2012-02-04 71 views
0

例如Autodestroy關於變更軌道

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選項來autodestroy舊對象?或者很多人更好地使用別的東西而不是頭像=方法?

謝謝。

回答

0

爲什麼不更新舊的頭像,而不是創造像新的一樣之一:

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

此外,您可以創建after_save回調裏面Avatar模型,如果你喜歡。