如何编写代码以不将空值字段包含到mongodb中

独木舟
class State
  include Mongoid::Document
  embeds_many :cities
  field :name
end

class City
  include Mongoid::Document
  embedded_in :state
  field :name
  field :population
  field ...
end

我不想将值为nil的字段包含在mongodb中,

nsw = State.new name: 'NSW'
if number_of_people
  nsw.cities.create name: 'Syndey', population: number_of_people
else
  nsw.cities.create name: 'Syndey'
end

因此有必要检查该字段是否为空或为空。但是问题是当City中有许多字段时,代码看起来很难看。

如何改善这一点并编写智能代码?

扎万

您需要在City模型中定义一个自定义类方法,如下所示:

def self.create_persistences(fields = {})
  attributes = {}
  fields.each do |key, value|
    attributes[key] = value if value
  end

  create attributes
end

并在您的控制器中,无条件调用此方法:

nsw.cities.create_persistences name: 'Syndey', population: number_of_people

注意:您也可以create在模型上重写方法,而不是定义新方法,但是我认为,我不希望重写代码其他部分中可能使用的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Spring Boot REST API 中将空值包含到 JSON 响应中

如何编译和链接其他源代码而不将其显式包含到项目中?

如何配置Certbot不将options-ssl-apache.conf包含到我的VirtualHosts中?

如何在不将目录包含到彼此的编译命令中的情况下构建目标?

如何将用另一个项目的C语言编写的源代码包含到Visual Studio中的C ++中我自己的项目中

如何合并多个包含空值的字段

如何在不将私有标头包含到框架中的情况下创建私有模块?

mySQL 不将 NULL 作为空字段的值

如何检查在js代码中编写的TempData Razor MVC中的空值

如何将链接实体中的字段包含到全文实体索引中?

如何将.rb文件中的代码正确包含到Rails体系结构中?

如何在替换 nan 的同时将新列包含到数据框中并避免空事件

Spring REST Docs - 如何配置 asciidoctor 任务以将生成的代码片段包含到索引中?

如何使用ejs将一些JS代码包含到Bootstrap模式中?

如何将所有必需的包(或库)包含到存档中以便 Python 代码工作

如何将 Babel 运行时包含到转换后的代码中?

如何将逐字源代码包含到html文档中

如何将XML代码段包含到XML文档中

Github发布:如何将符号链接内容包含到源代码中?

如何将模块包含到 haskell 源代码文件中

在MongoDB聚合中,如何将空值放在单独的字段中,将其他字段放在不同的字段中?

如何编写 Firestore 安全规则以在单个字段中也允许空值和未定义值?

将头文件包含到头文件中,而不将其内容暴露给includer

将JavaScript代码包含到HTML中。并非全部正常

将外部 .asm 文件包含到 C++ 代码中

Java Stream 过滤器 - 如何过滤数据而不将过滤器代码包装在“if”条件中以检查过滤键上的空值?

写入csv后如何执行代码而不将其包含在csv中

spring mongodb聚合中如何编写单个子id字段

如何要求 Firebase 中列表项字段的唯一值而不将该值作为键?