10 ruby ruby-on-rails rails-console ruby-on-rails-3
我有一个用户的关联作为user has_many agents和agent belongs_to user.
在rails控制台,我试图使用不同的用户来测试一个特定的场景,我想要一个没有代理的用户,因此我想删除user.agents.我试过user.agents.map(&:destroy),但它给出了错误,因为ActiveRecord::StaleObjectError: Attempted to delete a stale object.i甚至尝试过,user.agents.delete_all但它也不起作用.我可以在rails控制台中使用单个命令删除用户代理.
Ben*_*enj 20
你最好使用destroy它因为它经历了所有Rails魔法(回调等)
user.destroy #For a single record
user.agents.destroy_all #For a collection
Run Code Online (Sandbox Code Playgroud)
您正在寻找一种.destroy_all方法.它会破坏给定集合的所有记录.所以user.agents.destroy_all,会返回一个空数组user.agents.
您无法使用,.delete_all因为它是一个类方法,它会删除与给定条件匹配的记录.像这样,Agent.delete_all(condition).如果在没有条件的情况下使用它将删除匹配表中的所有记录.
请记住,.destroy方法是实例方法.它们在擦除之前实例化一个对象并执行回调..delete方法是类方法,它们直接擦除对象.
| 归档时间: |
|
| 查看次数: |
16610 次 |
| 最近记录: |