例如
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
所以我不想手动执行最后一个命令(destroy)。 has_many有没有自动解码旧对象的选项?或许多人更好地使用其他东西而不是avatar =方法?
谢谢。
答案 0 :(得分:0)
为什么不更新旧头像而不是创建新头像:
avatar = Avatar.find_or_initialize_by_user_id(:user_id => user.id)
avatar.attributes = new_attributes
avatar.save
另外,如果您愿意,可以在after_save
模型中创建Avatar
回调。