如何检查嵌入式模型中的动态mongoid属性

时间:2012-11-05 12:59:34

标签: ruby-on-rails mongoid

我需要一种干净的方法来检查嵌入式Mongoid模型实例上是否存在动态属性。

这适用于顶级模型;

account.attributes.member?("coordinates")

但我的坐标存储在嵌入式模型中。以下引发了未定义的方法错误;

account.locations.attributes.member?("coordinates") 

任何人都知道这样做的方法吗?

2 个答案:

答案 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的回复!

请注意,由于某种原因,我无法使代码格式化工作...抱歉