gpt4 book ai didi

ruby-on-rails - 在不实例化类的情况下调用ruby方法

转载 作者:数据小太阳 更新时间:2023-10-29 07:20:22 26 4
gpt4 key购买 nike

如果我像这样在 Rails 事件模型方法上调用一个方法:

class Foo < ActiveRecord::Base

end

Foo.first

我会取回第一个事件记录。我不必实例化类。

但是如果我创建自己的类并调用一个方法,我会得到一个异常:

class Person < ActiveRecord::Base
def greeting
'hello'
end
end

Person.greeting

#EXCEPTION: undefined method `greeting' for Person:Class

我怎样才能解决这个问题?

最佳答案

有几种方法。最重要的两个是:实例方法和类实例方法。

Foo.first 是一个类实例方法。它适用于类实例(在本例中为 Foo)。如果它在类中存储了一些数据,那么该数据将在您的程序中全局共享(因为只有一个类名为 Foo(或 ::Foo,确切地说))。

但是你的greeting方法是一个实例方法,它需要对象实例。如果您的问候方法将使用 Person 的名字,例如,它必须是实例方法,以便它能够使用实例数据(名字)。如果它不使用任何特定于实例的状态并且您确实希望它成为类实例方法,则使用 self“前缀”。

class Person < ActiveRecord::Base
def self.greeting
'hello'
end
end

关于ruby-on-rails - 在不实例化类的情况下调用ruby方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13067831/

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