如何删除一个ActiveRecord对象?
我看着Active Record Querying,它不会对删除,我可以看到任何东西。
id
删除,user.remove
,where
条款?这是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:从@帕维尔 - chuchuva的评论,用条件和条件destroy_all
delete_all
已被弃用,在Rails的5.1 - 看guides.rubyonrails.org/5_1_release_notes.html
有delete
,delete_all
,destroy
和destroy_all
。
该文档是:older docs和Rails 3.0.0 docs
delete
不实例化对象,而destroy
一样。在一般情况下,delete
比destroy
更快。
User.destroy
User.destroy(1)
将删除与id == 1
和:before_destroy
和:after_destroy
回调发生用户。例如,如果您有相关的记录
has_many :addresses, :dependent => :destroy
用户被摧毁后,他的地址也将被销毁。如果您使用的删除操作,而不是不会发生回调。
User.destroy
,User.delete
User.destroy_all(<conditions>)
或User.delete_all(<conditions>)
注意:用户是一个类和用户是一个实例对象