gpt4 book ai didi

ruby-on-rails - 获取接收类方法调用的 ActiveRecord_Relation

转载 作者:行者123 更新时间:2023-12-04 03:48:30 29 4
gpt4 key购买 nike

拥有:

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

如果您查看 ActiveRecord 中的 #all 的源代码:

def all
if current_scope
current_scope.clone
else
default_scoped
end
end

这意味着如果您使用 wherelimit 定义了一个范围,它将遵守它。或者,如果您要获取所有记录,它将只使用 default_scoped

关于ruby-on-rails - 获取接收类方法调用的 ActiveRecord_Relation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49033726/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com