You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GraphQL Ruby获取Paperclip缩略图URL?解决item未定义错误

解决GraphQL Ruby中Paperclip缩略图访问的报错问题

这个报错的原因很清晰——在GraphQL Ruby的对象类型(比如你的ItemType)里,要访问当前对应的模型实例,框架默认是用object变量,而不是你写的item。你直接用item的话,Ruby会把它当成未定义的局部变量,自然就报错了。

修正后的代码应该是这样:

class Types::ItemType < Types::BaseObject
  description 'An item'
  field :title, String, null: false
  field :thumbnail_image, String, null: true

  def thumbnail_image
    # 用object替代item,获取当前处理的Item实例
    object.image.url(:thumb_2x)
  end
end

另外你问是否需要单独的resolver?其实完全没必要。这种简单的字段逻辑,直接在类型里写内联的方法就足够简洁了。除非以后这个缩略图的生成逻辑变得复杂,或者需要在多个类型里复用,那时候再考虑抽成单独的Resolver类也不迟。

额外给个小建议:如果你的Item可能存在没有图片的情况,最好加上安全调用避免空指针错误,改成这样:

object.image&.url(:thumb_2x)

这样当image为nil时,方法会返回nil,正好匹配你字段定义的null: true。

内容的提问来源于stack exchange,提问作者tirdadc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:52:51