在 rails 的 JSON 响应中包含 ActiveStorage 附件?

Include ActiveStorage attachments in JSON response in rails?

此 url 提供所有 'products':

的信息
require 'open-uri'
JSON.load(open("http://localhost:3000/products.json"))

但是我添加了ActiveStorage附件;现在每个产品都有一个 'main_image' 和零个或多个 'secondary_images'.

我想更新 API 响应以提供所有附件的 URL(生成 url 的示例代码:app.url_for(Product.find(10).main_image))作为 [=35] 的一部分=] 响应(就像目前对所有其他产品属性所做的一样)。

rails 是否有内置 quick/easy 方法使 API 响应提供相关的 ActiveStorage 信息?

补充说明:

目前,app/views/products/_product.json.jbuilder` 看起来像这样:

json.extract! product, :id, :price, :created_at, :updated_at
json.url product_url(product, format: :json)

我不得不做类似的事情,我通过抓取记录然后添加数据来解决它。这是我能找到的实现它的最快、最简单的方法。

@products = Product.find(10)
@products = @products.map {|prod| prod.as_json.merge({ main_image: prod.main_image.service_url })}

然后会将记录输出为 json,其中的图像 URL。

我想我对你的价值观可能是正确的,但它可能不正确。