向 ActiveRecord 对象添加附加数据
Adding additional data to an ActiveRecord object
我正在检索 "Widget" ActiveRecord 对象:
@widget = Widget.find(params[:id])
我想在 return 之前向它添加一些额外的数据,所以我使用以下方法添加它:
@widget.display_name = "test display name"
然后我可以做 puts @widget.display_name
,这确实显示 "test display name",但是当我调用 puts @widget.inspect
时,它不包括额外的数据。
我最初得到:
NoMethodError (undefined method `display_name=' for # <Widget:0x007fe6147e8e00>):
但我在 Widget 模型中加入了 attr_accessor :display_name
并且停止了该特定消息。
明确一点,我实际上并不想将这些额外数据存储在数据库中,而只是 return 将其作为 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
上面应该return一个JSON对象的@widget
的属性,包括指定的display_name.
希望对您有所帮助!
我正在检索 "Widget" ActiveRecord 对象:
@widget = Widget.find(params[:id])
我想在 return 之前向它添加一些额外的数据,所以我使用以下方法添加它:
@widget.display_name = "test display name"
然后我可以做 puts @widget.display_name
,这确实显示 "test display name",但是当我调用 puts @widget.inspect
时,它不包括额外的数据。
我最初得到:
NoMethodError (undefined method `display_name=' for # <Widget:0x007fe6147e8e00>):
但我在 Widget 模型中加入了 attr_accessor :display_name
并且停止了该特定消息。
明确一点,我实际上并不想将这些额外数据存储在数据库中,而只是 return 将其作为 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
上面应该return一个JSON对象的@widget
的属性,包括指定的display_name.
希望对您有所帮助!