- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有几个提交给 Virtus 对象的表单(通过 Controller )。有些表单包含 extras
属性,有些则不包含。
我目前无法区分 extras
是否已设置为空数组(即用户取消选择表单上的所有复选框)或者是否从未提交过 extras。在任何一种情况下,extras
都将是一个空数组。
我需要这种区别,因为如果用户取消选择所有 extras
,我需要更新它们。另一方面,如果 extras 不是表单的一部分(即不在参数中),我不应该更新它们。
class UpdateForm
include Virtus.model(nullify_blank: true)
include ActiveModel::Model
attribute :extras, Array
attribute :booking_time, Time
def save
updatable_attributes = self.attributes.delete_if { |key, value| value.blank? }
some_object.update(updatable_attributes)
end
end
如果我这样调用 Virtus,我怎样才能在 extras
上给我一个 nil:
UpdateForm.new(booking_time: Time.current)
或者是否有更好的模式来做到这一点?
最佳答案
默认情况下,@extras
属性将设置为空数组(即使您将 add default: nil
设置为该属性)。
你可以做的是重写初始化器,这样它就会将 @extras
设置为 nil
除非它确实被定义了。
并使用 #nil?
而不是 #blank?
,它在空数组上返回 true。
class UpdateForm
include Virtus.model(nullify_blank: true)
include ActiveModel::Model
attribute :extras, Array
attribute :booking_time, Time
def initialize(opts={})
super
@extras = nil unless (opts[:extras] || opts['extras'])
end
def save
updatable_attributes = self.attributes.delete_if { |key, value| value.nil? }
some_object.update(updatable_attributes)
end
end
关于ruby-on-rails - 美德 : distinguish empty arrays from an unset attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31954440/
如何通过 typedef 区分模板参数? 情况:我有几种类型的列表(作为 vector 实现)。我有一个特殊的 StringList,我想以不同的方式处理它。 typedef std::vector
我有兴趣编写一个可以识别多个说话者的语音识别应用程序。例如,如果 Bill、Joe 和 Jane 正在说话,那么该应用程序不仅可以将声音识别为文本,还可以按说话者对结果进行分类(比如 0、1 和 2…
我有一个自定义 FormView 类的 mixin,如果保存成功,它只会添加一条成功消息,所以: class MessagesMixin(object): def form_valid(sel
我使用 Azure AD Graph API 差异查询来检测 Azure AD 中的更改。 对于 User 或 Group 类型的每个结果节点,如何区分该对象是新的还是仅更新的? 我使用ocp-aad
我使用 Azure AD Graph API 差异查询来检测 Azure AD 中的更改。 对于 User 或 Group 类型的每个结果节点,如何区分该对象是新的还是仅更新的? 我使用ocp-aad
使用 JavaMail,我可以从服务器读取未读的电子邮件。如果邮件包含以前回复的线索,是否可以以某种方式区分线索中的每条消息? (电子邮件采用 HTML 编码) 最佳答案 您指的是某人回复消息并且回复
我目前正在制作一款战斗游戏的领域模型,我很难确定某些元素应该是它们自己的一个类还是某个类的属性。例如,我使用类别列表来确定以下想法/对象:Fighter、Level、Weapon、Armor、Attr
我有一个名为 A 的抽象类,以及两个继承类:B 和 C。我有一个带有参数的方法: myMethod (final A a) 我想针对实例化对象的类型做出不同的事情。我该怎么做? 一个不错的选择是遵循另
我正在使用 2 个 pod。 MMDrawerController 0.5.1& WYPopoverController 0.1.7 现在我想在我的 MMView 上制作一个 WYPopover 一些
我该如何解决: /O=CHEESE/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=LHALA1 电子邮件地址?我必须使用 Exchange Web 服务
我正在解析 iTunes xml 库。由于 iTunes 12 新播放列表可用(电视节目、PDF、...) 由于“Distinguished Kind”键值,我想过滤其中的一些播放列表。 不幸的是,这
我使用 BouncycaSTLe 库通过 X509v3CertificateBuilder 类从 PKCS10 请求生成证书。 它返回构建一个 X509CertificateHolder 对象,其中包
我需要为最近的项目使用多个工作区。每个工作区可能包含 10 个或更多项目。 当我在各种应用程序和不同的 Eclipse 实例(对于多个工作区)之间切换时,我希望能够轻松区分给定的工作区,而不必花 5
我正在我的 OS X 应用程序中实现对 Lion 的“恢复”功能的支持。 我有一个 NSViewController 的自定义子类,我在其中实现了该方法编码RestorableStateWithCod
我试图区分使用搜索框的人何时得到谷歌地图地点自动完成的帮助,以及何时他们只是输入文本。 我能够检测到输入按钮的按下,但我无法区分它们自己输入数据或从自动完成列表中选择一个项目之间的区别。 我注意到,当
我们商店中有几款应用使用 ARFaceTrackingConfiguration 在配备 FaceID 摄像头的 iOS 设备中检测用户的脸部。 正如您可能已经看到的,ARKit 还会跟踪您放在 iP
我正在尝试更深入地理解动态/静态绑定(bind),我可以说,经过大量阅读和搜索后,我对某些事情感到非常困惑。 嗯,java对重写方法使用动态绑定(bind),其原因是编译器不知道该方法属于哪个类,对吗
对于大学的一个项目,我试图在 WSO2 应用程序服务器 v5.01 上设置一个非常简单的 HelloWorld 服务。它包含一个接口(interface)和一个具有三个方法的类。 界面: public
我有包含“词典单词”和名称的英语和德语文本。 e.g. "... In Florence the painter Leonardo built ..." 我有一个 Java 程序,需要确定每个单词是否
我是 Libpcap 和 Wireshark 新手:对于我的学校项目,我必须区分不同类型的流量(SMTP、网络流量、VoIP、在线游戏、下载、流媒体……)。虽然一开始我依赖端口号(SMTP 为 25,
我是一名优秀的程序员,十分优秀!