我有一个Deal类(它叫做模型对吗?)就像这样。
class Deal < ApplicationRecord
end
我可以应用ActiveRecord::Relation的方法
交易类
即Deal.destroy_all
以及Deal.where(id: 1).destroy_all
之类的内容。
我得到Deal.where(id: 1)
部分,因为它返回ActiveRecord::Relation
。但是Deal.destroy_all
呢?我认为这不是ActiveRecord::Relation
。
我出错了什么? 的修改 任何帮助,将不胜感激。真。您可以将我引导至博客或其他任何内容
答案 0 :(得分:1)
当我们调用ActiveRecord
类方法时,如果它没有加载,Rails会调用:all
。
这意味着Deal.destroy_all
与Deal.all.destroy_all
相同,Deal.all.class
当然是ActiveRecord::Relation
。
def destroy_all
records.each(&:destroy).tap { reset }
end
def records
load
@records
end
def load(&block)
exec_queries(&block) unless loaded?
self
end
def all
if current_scope
current_scope.clone
else
default_scoped
end
end