首页 文章

如何删除ActiveRecord对象?

提问于
浏览
284

如何删除ActiveRecord对象?

我看了Active Record Querying,它没有删除任何我能看到的内容 .

  • 删除 id

  • 删除当前对象,如: user.remove

  • 可以根据 where 子句删除吗?

3 回答

  • 54

    这是 destroydestroy_all 方法,比如

    user.destroy
    User.find(15).destroy
    User.destroy(15)
    User.where(age: 20).destroy_all
    User.destroy_all(age: 20)
    

    或者,您可以使用 deletedelete_all ,它不会强制执行 :before_destroy:after_destroy 回调或任何从属关联选项 .

    User.delete_all(condition:'value')将允许您删除没有主键的记录

  • 45

    deletedelete_alldestroydestroy_all .

    文档是:older docsRails 3.0.0 docs

    delete 不实例化对象,而 destroy 则实例化 . 通常, deletedestroy 快 .

  • 510
    • User.destroy

    User.destroy(1) 将删除用 id == 1:before_destroy:after_destroy 回调的用户 . 例如,如果您有相关记录

    has_many :addresses, :dependent => :destroy
    

    用户被销毁后,他的地址也将被销毁 . 如果您使用删除操作,则不会发生回调 .

    • User.destroyUser.delete

    • User.destroy_all(<conditions>)User.delete_all(<conditions>)

    Notice :用户是一个类,用户是一个实例对象

相关问题