gpt4 book ai didi

ruby-on-rails - 从 JSON 访问虚拟属性

转载 作者:行者123 更新时间:2023-12-01 06:56:11 26 4
gpt4 key购买 nike

我的设置:Rails 2.3.10,Ruby 1.8.7

我曾尝试通过 JSON 调用访问模型中的虚拟属性,但没有成功。假设我有以下模型和 Controller 代码

class Product
name,
description,
price,
attr_accessor :discounted_price
end

class Price
discount
end

class ProductsController
def show
@product = Product.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render :json => @product }
end
end
end

我喜欢的是让 JSON 输出还包括 Product.discounted_price,它为每次调用实时计算,即 discounted_price = Price.discount * Product.price。有没有办法做到这一点?

解决方案:
在 dmarkow 的初步帮助下,我想通了,我的实际场景比上面的例子更复杂。我可以做这样的事情,在产品模型中,添加一个getter方法
def discounted_price
...# do the calculation here
end

在 JSON 调用中执行此操作
store = Store.find(1)
store.as_json(:include => :products, :methods => :discounted_price)

最佳答案

您可以运行 to_json:methods参数以包含这些方法的结果。

render :json => @product.to_json(:methods => :discounted_price)

关于ruby-on-rails - 从 JSON 访问虚拟属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5111165/

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