gpt4 book ai didi

ruby-on-rails - 如何使用新属性扩展 ActiveRecord 模型?

转载 作者:太空宇宙 更新时间:2023-11-03 17:49:10 26 4
gpt4 key购买 nike

我正在开发一个 REST API,在将结果(使用 ACtiveRecord 从数据库中获取)发送到客户端之前,我需要使用一些额外的数据对其进行扩展。这是我的设想:

  def index
(categories = Category.all()).each() do |category|
category.image = "some image"
end
render json: categories
end

Ruby 似乎不像 JS 那样动态添加对象属性,所以这段代码以错误消息结尾

undefined method `image=' for #<Category:0x007f89f0513d40> 

我阅读了很多书并找到了在我的 Category 模型中添加 attr_accessor :image 的解决方案。现在它不会抛出错误,而且 image 属性也不会出现在 JSON 输出中。

最佳答案

与其自己玩弄对象,不如花几分钟时间了解 jbuilder 的工作原理,它非常简单,会让您的生活轻松很多,尤其是当 json 格式包含一些额外/不同的内容时来自原始数据库对象的数据,这是您可以执行的操作的简单格式

# app/views/categories/index.json.jbuilder
json.array! @categories do |category|
json.prop1 category.prop1
json.prop2 category.prop2
json.image whatever_image_function_here
end

其他解决方案是覆盖类的 as_json 方法

关于ruby-on-rails - 如何使用新属性扩展 ActiveRecord 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28130815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com