Ruby on rails 如何访问块内的实例变量
我正在使用gem&希望它对不同的URL和令牌具有动态性 gem文档和其他地方给出的示例具有硬编码的URL和令牌 我正在尝试访问Ruby on rails 如何访问块内的实例变量,ruby-on-rails,ruby,graphql,block,Ruby On Rails,Ruby,Graphql,Block,我正在使用gem&希望它对不同的URL和令牌具有动态性 gem文档和其他地方给出的示例具有硬编码的URL和令牌 我正在尝试访问@shop.token内def头块GraphQL::Client::HTTP class Graphql def initialize(shop_id) @shop = Shop.find_by(shop_id) end def http GraphQL::Client::HTTP.new("http://graphql-swap
@shop.token
内def头
块GraphQL::Client::HTTP
class Graphql
def initialize(shop_id)
@shop = Shop.find_by(shop_id)
end
def http
GraphQL::Client::HTTP.new("http://graphql-swapi.parseapp.com/") do
def headers(context)
{
"User-Agent": "My Client",
"Token" : @shop.token
}
end
end
end
def client
schema = GraphQL::Client.load_schema(http{@shop})
@client ||= GraphQL::Client.new(schema: schema, execute: http{@shop}).tap do |client|
client.allow_dynamic_queries = true
end
end
end
Rails可以通过yield
或self.instance\u eval(&block)
但是我们可以在headers方法中访问@shop,使令牌成为动态的
graphql客户端http类是如何定义的在代码中,您实际如何使用客户端?感觉可能您可以将令牌作为上下文的一部分传递,即
“token”:context[:token]
?类似于如何操作?您可以尝试使用lambda{“用户代理”:“我的客户机”,“令牌”:lambda{@shop.Token}
。但是它不能直接工作,您必须将它与一起使用。调用@TomLord我已经更新了客户端的代码,您能看一下吗?好的,您如何构造查询?同样,只要看一下自述,就会将上下文
传递到每个查询中。那么将令牌:@shop.token
与每个查询一起传递是否可行?例如,您是否定义了一个Graphql#query
方法?@TomLord谢谢,在调用query方法时,将尝试通过上下文传递它