【问题标题】:rails, deleting record if exists with a same column value before creating a new recordrails,如果在创建新记录之前存在具有相同列值的记录,则删除记录
【发布时间】:2013-01-26 09:59:33
【问题描述】:

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

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

在照片上:

belongs_to :person, :foreign_key => 'person_id'

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

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

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rails-activerecord


    【解决方案1】:

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

    photo = person.photos.where(kind: "face").first
    photo.destroy if photo
    
    # procede with creating new photo object
    

    【讨论】:

    • 我认为它实际上是 where(:kind => "face") :) 但这有效。我已在更新操作中放入控制器
    • 是的,它是 ruby​​ 1.9 vs 1.8 语法:)
    • 哦...我还在 1.8 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 2018-08-11
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多