我正在检索“窗口小部件” ActiveRecord对象:
@widget = Widget.find(params[:id])
我想在返回之前添加一些额外的数据,所以我使用以下方法添加它:
@widget.display_name = "test display name"
然后,我可以执行
puts @widget.display_name
,这确实显示了“测试显示名称”,但是当我调用puts @widget.inspect
时,它不包括多余的数据。我最初得到的是:
NoMethodError (undefined method `display_name=' for # <Widget:0x007fe6147e8e00>):
但我在Widget模型中加入了
attr_accessor :display_name
,这停止了该特定消息。需要明确的是,我实际上并不希望将这些额外的数据存储在数据库中,而只是将其作为JSON对象返回。我正在使用
render json: @widget, status: :ok
渲染JSON,这也不包括多余的数据。为了清楚起见,这是我的代码:
def show
@widget = Widget.find(params[:id])
@widget.display_name = "test display name"
puts @widget.display_name # displays "test display name"
puts @widget.inspect
if @widget
render json: @widget, status: :ok
else
head :not_found
end
end
最佳答案
您可以尝试将display_name
合并到@widget
的属性中:
@widget = @widget.attributes.merge(display_name: "test display name")
render json @widget
上面的代码应该返回一个
@widget
属性的JSON对象,包括指定的display_name。希望能帮助到你!