将从mongoid查询构建的Ruby数组转换为实际的mongoid对象,或者重新编写方法以返回mongoid对象?
我有一个名为将从mongoid查询构建的Ruby数组转换为实际的mongoid对象,或者重新编写方法以返回mongoid对象?,ruby,mongoid,Ruby,Mongoid,我有一个名为Department的mongoid模型和一个名为User的单独模型,这两个模型之间没有本机关系。由于应用程序中的关系是如何工作的,我在用户模型上手动存储文档ID 我正在使用Ruby的Grape框架,它有一个过滤器系统,位于名为Entities的Mongoid对象之上,它拒绝任何不是Mongoid查询响应对象的东西,因为这个方法返回的是Ruby数组而不是Mongoid对象,所以我的框架会给我错误 有没有办法重写我的函数以返回Mongoid对象?或者有什么方法可以将Mongoid对象数
Department
的mongoid模型和一个名为User
的单独模型,这两个模型之间没有本机关系。由于应用程序中的关系是如何工作的,我在用户模型上手动存储文档ID
我正在使用Ruby的Grape
框架,它有一个过滤器系统,位于名为Entities
的Mongoid对象之上,它拒绝任何不是Mongoid查询响应对象的东西,因为这个方法返回的是Ruby数组而不是Mongoid对象,所以我的框架会给我错误
有没有办法重写我的函数以返回Mongoid对象?或者有什么方法可以将Mongoid对象数组转换为一个Mongoid对象
## inside Department Model
def self.user_can_access(user = nil)
if user != nil
departments = []
## department_access_keys are embedded documents belonging to a user
user.department_access_keys.each do |key|
departments << BACKBONE::Department.find(key.key)
end
departments ## => returns an array of Department Documents that a user has been granted access to
else
raise 'user was not defined'
end
end
##内部部门模型
自定义用户可以访问(用户=nil)
如果用户!=无
部门=[]
##部门访问密钥是属于用户的嵌入文档
user.department_access_key.each do| key|
departments返回用户已被授予访问权限的部门文档数组
其他的
raise“未定义用户”
结束
结束
我相信,“Mongoid对象”应该只是一个散列,所以这应该是可行的(也请注意Enumerable.map
而不是phpish每个{我相信,“Mongoid对象”应该只是一个散列,所以这应该是可行的(也请注意Enumerable.map
而不是phpish每个{你就不能像这样使用find
吗
departments = BACKBONE::Department.find(*user.department_access_keys.map(&:key))
我对mongoid
不是很熟悉,但它似乎表明这正是实现您想要的目标的方法
标准#查找
按ID查找一个或多个文档。如果任何ID不匹配,默认情况下将引发错误
示例:
Band.find("4baa56f1230048567300485c")
Band.find(
"4baa56f1230048567300485c",
"4baa56f1230048567300485d"
)
Band.where(name: "Photek").find(
"4baa56f1230048567300485c"
)
你不能像这样使用find
吗
departments = BACKBONE::Department.find(*user.department_access_keys.map(&:key))
我对mongoid
不是很熟悉,但它似乎表明这正是实现您想要的目标的方法
标准#查找
按ID查找一个或多个文档。如果任何ID不匹配,默认情况下将引发错误
示例:
Band.find("4baa56f1230048567300485c")
Band.find(
"4baa56f1230048567300485c",
"4baa56f1230048567300485d"
)
Band.where(name: "Photek").find(
"4baa56f1230048567300485c"
)
谢谢!我不知道为什么葡萄实体不接受数组,但这解决了我的问题!谢谢!我不知道葡萄实体为什么不接受数组,但这解决了我的问题!