gpt4 book ai didi

ruby-on-rails - 为什么 MyModel.all 在 Rails 中有效?

转载 作者:行者123 更新时间:2023-12-04 03:52:55 25 4
gpt4 key购买 nike

我不明白这个小东西:

假设,我们有“条件”模型

class Condition < ActiveRecord::Base
end

为什么 Condition.all 有效?

Condition.all.each { |p| do_something }

这个语法告诉我们,我们在某处实例化了“Condition”类对象?

或者它是对配置案例的一些约定?

我问这个,因为我想覆盖 Condition.all 方法以返回按“created_at”字段值排序的条件?

我不需要原地使用排序方法,我想插入条件,因为在整个项目中我只需要一个排序

谢谢

最佳答案

Person.all 只是 Person.find(:all) 的别名(参见文档 here )。

allfind 一样,是 ActiveRecord::Base 上的类方法,因此不需要实例来调用.

更新

要覆盖类方法,您需要记住 self. 前缀。例如你可以像这样覆盖all:

class Condition < ActiveRecord::Base
def self.all(*args)
# overridden implementation here
end
end

如果您不清楚实例方法与类方法,请阅读 this blog post这是一个很好的总结,

但是,如果您只想指定默认顺序,则不需要这样做。你可以只使用 default_scope :

class Condition < ActiveRecord::Base
default_scope :order => 'created_at'
end

关于ruby-on-rails - 为什么 MyModel.all 在 Rails 中有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2895584/

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