我正在尝试从graphql-ruby中的resolve方法访问url助手,以生成像url这样的字段。我知道我能做到:
EventType = GraphQL::ObjectType.define do
field :url, !types.String do
resolve ->(event, _args, _ctx) do
Rails.application.routes.url_helpers.event_path event
end
end
end我知道可以在你的模型中使用include Rails.application.routes.url_helpers来避免每次调用都加上前缀,但是如何使用graphql-ruby来做到这一点呢?
另外,如果我调用event_url,它没有主机和端口。显然,我希望避免在每个帮助器调用中都添加host: request.host。
发布于 2017-02-03 02:04:56
我已经通过创建将url_helpers注入解析器上下文的config/initializers/graphql.rb解决了这个问题:
module GraphQL
module Define
class DefinedObjectProxy
include Rails.application.routes.url_helpers
end
end
end至于主机和端口,它看起来像
# Allow to build url from models or graphql without needing to pass host/port every time
Rails.application.routes.default_url_options = Rails.application.config.action_mailer.default_url_options真的很管用。我已经将它插入到一个单独的初始化器中,尽管我怀疑将它添加到config/routes.rb中也可以。
https://stackoverflow.com/questions/42009308
复制相似问题