假设我有一个处理待办事项清单的应用程序。清单中已完成和未完成的项目。现在,我想向列表对象添加两个虚拟属性。列表中已完成和未完成项目的计数。我还需要将这些显示在json输出中。
我的模型中有两种方法可以提取未完成/已完成的项目:
def unfinished_items
self.items.where("status = ?", false)
end
def finished_items
self.items.where("status = ?", true)
end
那么,如何在json输出中获得这两种方法的计数?
我正在使用Rails 3.1
Rails中对象的序列化包括两个步骤:
as_json
调用将对象转换为简化的Hash。to_json
在as_json
返回值上调用,以获取最终的JSON字符串。通常,您希望to_json
一个人呆着,因此您所要做的就是添加自己的as_json
实现,如下所示:
def as_json(options = { })
# just in case someone says as_json(nil) and bypasses
# our default...
super((options || { }).merge({
:methods => [:finished_items, :unfinished_items]
}))
end
您也可以这样:
def as_json(options = { })
h = super(options)
h[:finished] = finished_items
h[:unfinished] = unfinished_items
h
end
如果要为方法支持的值使用不同的名称。
如果您关心XML和JSON,请参阅serializable_hash
。
有一个用户集合
了解virtual属性 virtual是虚拟属性的意思,即原来Schema定义里是不存该属性,后来通过virtual方法赋予的属性。可以这样理解,Schema定义的属性是要保存到数据库里,而virtual属性基于已有属性做的二次定义,这样可以提供更好的语义上的处理。 模型属性 = Schema定义的属性 + virtual属性 下面举几个例子 实例1 需求是根据手机号和邀请码来判断该用户是否是有
我想在gradle.properties文件中添加ndk.abifilters属性。现在我有了这栋楼里的房子。这是我建筑的一部分 这是我的gradle.properties文件的一部分
问题内容: 我有一个追随者。我添加了 2 x双引号, 以便可以在中将其声明为变量,实际上,它包含属性的双引号的一倍。完整的示例代码在这个小提琴中。 我正在使用,但也可以使用,因此对于任何一种工作解决方案都将不胜感激。 如果我的密钥与列表中的项目匹配,我想添加验证及其子密钥。我有三种情况,下面的代码按注释对它们进行了解释。 该迭代函数显示如下。 我的决赛应该如下图所示。 我无法实现所有三种情况。有人
问题内容: 如何添加到特定内容?不起作用。 问题答案: jQuery <1.9 jQuery 1.9以上
问题内容: 考虑以下代码示例: 从PHP 5.3开始,这将产生(类似)以下输出: 但是下面的代码: …仅发出错误: 为什么将这些属性“添加”到对象?请注意,它们没有定义为手册页DateTime`上的类的一部分。 问题答案: 发生了一些魔术,但这很简单。 DateTime类没有您要访问的公共变量“date”。但是,作为PHP工作方式的副作用,在该类上调用print_r或var_dump时会创建一个变