我需要一种干净的方法来检查嵌入式Mongoid模型实例上是否存在动态属性。
这适用于顶级模型;
account.attributes.member?("coordinates")
但我的坐标存储在嵌入式模型中。以下引发了未定义的方法错误;
account.locations.attributes.member?("coordinates")
任何人都知道这样做的方法吗?
答案 0 :(得分:1)
因为看起来这些位置是嵌入式文档的数组。可能有很多关系。
数据类型attributes
没有方法名称array
。这就是为什么你得到未定义的错误。你可以通过
account.locations[0].attributes.member?("coordinates")
或使用
检查整个数组中的坐标成员 account.locations.map {|x| [x.id,x.attributes.member? 'coordinates'] }
答案 1 :(得分:0)
我最终得到以下内容,因为我甚至不能依赖于位置属性;
如果@ account.locations? if!@account.locations [0] .coordinates? if @ account.locations [0] .coordinates.blank? #做一点事 结束 结束 端
有点乱,但它有效。
感谢Ramesh的回复!
请注意,由于某种原因,我无法使代码格式化工作...抱歉