gpt4 book ai didi

ruby - 我如何修改此类以使用单例模式,如 activemodel?

转载 作者:太空宇宙 更新时间:2023-11-03 18:26:56 26 4
gpt4 key购买 nike

我有一个像这样使用的 httparty“模型”

myRest = RestModel.new
myRest.someGetResquest()
myRest.somePostRequest()

我将如何着手将其更改为类似于 activemodel 的工作方式,就像这样?

RestModel.someGetRequest()
RestModel.somePostRequest()

这个blog post展示了如何包含单例模块,但它仍然像这样访问实例:RestModel.instance.someGetRequest()

这是我的代码:

class Managementdb
include HTTParty

base_uri "http://localhost:7001/management/"

def initialise(authToken)
self.authToken = authToken
end

def login()
response = self.class.get("/testLogin")
if response.success?
self.authToken = response["authToken"]
else
# this just raises the net/http response that was raised
raise response.response
end
end

attr_accessor :authToken

...
end

请告诉我我做错了(给我亮灯)

最佳答案

您想使用 extend 而不是 include,这会将方法添加到类单例中,而不是让它们在实例上可用。

class Managementdb
extend HTTParty
end

一个更长的例子来说明这一点:

module Bar
def hello
"Bar!"
end
end
module Baz
def hello
"Baz!"
end
end
class Foo
include Bar
extend Baz
end

Foo.hello # => "Baz!"
Foo.new.hello # => "Bar!"

关于ruby - 我如何修改此类以使用单例模式,如 activemodel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9537316/

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