2

我有一个与照片对象有“has_many”关系的对象人

has_many :photos, :foreign_key => 'person_id', :dependent => :destroy

在照片上:

belongs_to :person, :foreign_key => 'person_id'

我想做的事。在人员更新期间,如果用户向该人上传了具有相同“种类”(这是照片的属性)的新照片,那么旧种类将被从数据库中删除

例如:如果已存在具有相同 'person_id' 和相同“种类”的照片记录,则正在对上传带有种类“脸”的照片的人执行更新,它将首先被删除(不更新),并且只有然后保存新记录

谢谢

4

1 回答 1

6

您的逻辑足够复杂,无法构建到框架中,您可以在控制器或模型中执行所需的操作,只需找到要替换的照片,如果存在则将其销毁并创建新的

photo = person.photos.where(kind: "face").first
photo.destroy if photo

# procede with creating new photo object
于 2013-01-26T10:06:31.497 回答