如何通过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
相关产品推荐
相关产品推荐

