获取接收类方法调用的ActiveRecord_Relation
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取接收类方法调用的ActiveRecord_Relation相关的知识,希望对你有一定的参考价值。
有:
class Foo < ApplicationRecord
def self.to_csv
# irrelevant
end
end
Rails允许我这样做:
Foo.all.to_csv
但是我如何访问在to_csv
中接收方法调用的集合? (在这种情况下all
)
答案
这似乎与直觉相反,但你可以使用#all
例如:
class Foo < ActiveRecord::Base
def self.to_csv
all.map(&:convert_to_csv)
end
end
这不仅适用于Foo.all.to_csv
,也适用于Foo.where(...).to_csv
如果你看看#all
里面的ActiveRecord
的来源:
def all
if current_scope
current_scope.clone
else
default_scoped
end
end
这意味着如果您使用where
或limit
定义了范围,它将尊重它。或者,如果你抓住所有记录,它将只使用default_scoped
以上是关于获取接收类方法调用的ActiveRecord_Relation的主要内容,如果未能解决你的问题,请参考以下文章