Ruby on rails 如何基于检索到的字段计算字段并将其合并到rails中的JSON中
我有一个控制器方法,它根据用户ID从一个表中检索所有数据。我想为该用户简单地添加该表中的两个整型字段,并将其作为返回的JSON的一部分。这就是我到目前为止所做的:Ruby on rails 如何基于检索到的字段计算字段并将其合并到rails中的JSON中,ruby-on-rails,json,Ruby On Rails,Json,我有一个控制器方法,它根据用户ID从一个表中检索所有数据。我想为该用户简单地添加该表中的两个整型字段,并将其作为返回的JSON的一部分。这就是我到目前为止所做的: def show @user = User.find(params[:id]) respond_to do |format| # Here we need to remove the layout because the request # is done via ajax and the l
def show
@user = User.find(params[:id])
respond_to do |format|
# Here we need to remove the layout because the request
# is done via ajax and the layout is already loaded.
format.json { render json: @user.to_json }
end
我想要添加在一起以创建这个新字段的字段是“Score1”和“Score2”。我假设我必须执行类似@user.OverallScore=@user.Score1+@user.Score2的操作,您可以在
user
模型中定义一个实例方法score\u sum
def score_sum
self.Score1 + self.Score2
end
并在控制器中使用
@user.to_json(:methods=>[:score\u sum])
。处理此问题的最短方法可能如下:
在用户
模型中,添加一种方法:
class User
def overall_score
score1 + score2
end
end
然后在控制器中,保留现有内容,并将最后一行更改为:
format.json { render json: @user.as_json(methods: [:overall_score]) }
此外,我建议将
用作_json
,并将哈希到json的转换留给呈现方法本身,除非您需要操作转换后的字符串本身,否则我同意您的编辑,只要您也更改了问题。即使风格是错误的,我也使用了塞巴斯蒂安使用的相同风格。这个Score1+Score2
应该是self.Score1+self.Score2
Mh?绝对不需要,在赋值过程中需要self
,否则,只要先前没有使用相同名称赋值的局部变量,就可以使用不带self
的字段。仅在分配期间使用self
也是一种很好的约定。我不想要hollywar,而且知道你说的一切,在某些语言中使用名称约定可以使代码可读。我不确定,但如果某个列的camel case nameScore1
应该会引起关于未初始化常量的错误,因此我将self.
放进去以避免它。对不起,你肯定是在写,我以为你指的是在self.score1
等上使用self,而不是在self.score1