gpt4 book ai didi

ruby-on-rails - Rails - 使用 JSON 从 Controller 返回带有对象的附加属性

转载 作者:行者123 更新时间:2023-12-04 00:32:25 26 4
gpt4 key购买 nike

这是我的 People Controller 中用于创建操作的代码:

def create
@person = Person.new(person_params)
@person.branch_id = session[:branch_id]
@person.added_by = current_user.id
if @person.save
respond_to do |format|
format.json { render json: @person}
end
end
end

我的人物模型中有一个方法来获取此人的全名:

def full_name
[self.first_name, self.middle_name, self.last_name].reject(&:blank?).join(" ")
end

当它作为 JSON 对象返回时,将人员的全名添加到 @person 的最佳方法是什么

最佳答案

正如您希望它在 JSON 中一样,您可以覆盖 Person 类的 as_json 方法以包含添加 full_name 方法:

def as_json(options = {})
super options.merge(methods: [:full_name])
end

Rails 会在需要将对象序列化为 JSON 字符串时使用此方法,例如通过 render json: @person。如果你只想在这一次添加额外的方法,你也可以使用 render json: @person.as_json(methods: [:full_name]) 直接内联调用它,或者如果你想做更多对 JSON 输出的复杂自定义,您可以考虑使用专用的序列化程序类,例如使用 ActiveModel::Serializers gem 。但是,由于您只想添加一种方法,而且可能在任何地方都需要序列化 ​​@person,因此针对您的情况,最好的方法是只覆盖 as_json,如开始。

关于ruby-on-rails - Rails - 使用 JSON 从 Controller 返回带有对象的附加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27649836/

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