我想设置一个任意属性以渲染为 JSON。
我遵循了这个问题的答案:如何在 ruby/rails 中将数据附加到 json?去做
model = Model.find
model[:extra_info] = "More detail."
model.to_json
它工作得很好,但在我的测试中,我收到一个弃用警告,不再支持设置任意属性,请使用 attr_writer。
我尝试使用
model.write_attribute(:extra_info, "More detail.")
它适用于单元测试,但在服务器上,会引发异常:
private method `write_attribute' called for Model
什么是不弃用的干净方式来做到这一点。
我知道我可以在 JSON 调用中使用Add virtual attribute to json output中的方法设置它,但在这种情况下,要添加的变量不是模型关注的一部分,因此它无法访问数据需要构造额外的属性,这样做会很讨厌和混乱。
那么控制器将这些数据推送到模型中以便正确呈现 JSON 的正确方法是什么?