gpt4 book ai didi

ruby-on-rails - 作用域需要类加载等

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:53 25 4
gpt4 key购买 nike

我的模型目录中有一个文件 booking.rb。它包含类定义

class Booking < ActiveRecord::Base
def self.setup_connection
wsdlurl = 'http://10.14.47.201:7001xxx/webservice/RetrieveBookingsByCCLV1_01.wsdl'
factory = SOAP::WSDLDriverFactory.new(wsdlurl)
@@driver = factory.create_rpc_driver
@@driver.return_response_as_xml = true
end
end

我尝试从我的 application.rb 调用此方法,请参阅下面的代码。

module PNR2
class Application < Rails::Application
...
...
Booking.setup_connection
end
end

当我运行应用程序时出现以下错误...

  C:/Users/sg0209028/RubymineProjects/PNR2/config/application.rb:49:in   `<class:Application>': uninitialized constant PNR2::Application::Booking (NameError)  
from C:/Users/sg0209028/RubymineProjects/PNR2/config/application.rb:18:in `<module:PNR2>'
from C:/Users/sg0209028/RubymineProjects/PNR2/config/application.rb:17:in `<top (required)>

之所以引用第 49 行,是因为我删除了这个 application.rb 文件中的所有注释,以避免在本注释中占用空间。原来的第 49 行是 Booking.setup_connection 行。

我显然不明白名称作用域在 Rails 3 中是如何工作的。也许我也不明白什么时候应该调用类方法来在模型对象中设置常量。感觉这应该是应用程序初始化任务,但也许该请求应该在其他地方。

如果有人想知道,我有这段代码并调用了适当的 Web 服务,它在一个紧张的 Ruby(非 Rails)环境中工作。

下面是代码

require 'soap/wsdlDriver'
require 'rexml/document'
require 'soap/rpc/driver'
WSDL_URL = "http://10.14.47.202:7001/xxx/webservice/RetrieveBookingsByCCLV1_01.wsdl"
factory = SOAP::WSDLDriverFactory.new(WSDL_URL)
driver = factory.create_rpc_driver
driver.return_response_as_xml = true
params = {"ccl" => "Booking[BookingName[BookingNameItem[TicketNumber > \"123456789\"]]]", "xmlFormat" => "DefaultBooking"}
response = driver.RetrieveBookingsByCCL(params)
doc = REXML::Document.new response
puts "Number of PNRs = " + REXML::XPath.first(doc, "//count").text
doc.elements.each ("//originCity") {|element| puts "Element = " + element.text}

谁能给这位新手一些指点?哦,是的,我确实意识到调用一些基于 SOAP 的服务而不是后端数据库会出现一些问题。一旦连接正常,我就做好了准备!

提前致谢

克里斯

最佳答案

我刚刚意识到您正试图在 application.rb 文件中使用 Booking 类。我认为您会遇到问题,因为此时您的应用程序尚未完全配置,但如果您可以解决这些问题,要实际使用该模型,您必须在 application.rb 文件顶部要求该文件:

require 'rails/all'
require File.join(File.dirname(__FILE__), '../app/models/booking')

关于ruby-on-rails - 作用域需要类加载等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5097715/

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