Answers:
它destroy和destroy_all方法一样
user.destroy
User.find(15).destroy
User.destroy(15)
User.where(age: 20).destroy_all
User.destroy_all(age: 20)
或者,您可以使用delete和delete_all不会强制执行:before_destroy和:after_destroy回调或任何相关的关联选项。
User.delete_all(condition: 'value')将允许您删除没有主键的记录
注意:根据@hammady的评论,user.destroy如果用户模型没有主键,则将无法使用。
注释2:在Rails 5.1中已弃用@ pavel-chuchuva的注释,destroy_all其中包含条件和delete_all条件-请参阅guides.rubyonrails.org/5_1_release_notes.html
User.find_by(username:"bob") 也很容易确定要销毁或删除的记录。
有delete,delete_all,destroy,和destroy_all。
这些文档是:旧文档和Rails 3.0.0文档
delete不会实例化对象,而destroy会实例化。通常,delete速度比快destroy。
delete更快,但绕过了您可能在模型上定义的回调
User.destroyUser.destroy(1)将删除用户与id == 1和:before_destroy和:after_destroy出现回调。例如,如果您有关联的记录
has_many :addresses, :dependent => :destroy
用户被销毁后,其地址也将被销毁。如果改用delete操作,则不会发生回调。
User.destroy, User.delete
User.destroy_all(<conditions>) 要么 User.delete_all(<conditions>)
注意:User是一个类,而user是一个实例对象
User.destroy_all()运行回调,因此在删除任何内容之前,它会加载记录。这是两个SQL语句,而不是一个。除了对性能的影响外,这也对并发性有影响。安全调用会跳过回调;User.delete_all()只会发出一个DELETE FROM...命令。