问题标签 [mongoid4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 如何解决“未授权查询 db.users”Mongoid
我使用 Rails 4 和 Mongoid 4 创建了一个新的 Rails 应用程序"not authorized for query on mydb.users"
。运行测试时出现此错误:
起初我以为这是 Mongoid 和 MongoDB 的授权问题,但我可以访问 mongoldb/db/collection 而无需在控制台中进行身份验证而不会遇到麻烦。
因为我是 Rspec 测试的新手,所以我不确定问题出在我的测试、mongoid 还是 mongodb 上。
有任何想法吗?
ruby-on-rails-4 - Rails 嵌套模型优化查询
编辑:我正在使用 Mongoid,所以没有链接也没有has_many through:
我正在为项目管理开发一个后端,并且我有“深度”相关的模型
现在,我为我的用户编写了一个侧边栏。在此侧边栏中,如果用户有承包商资料,我想显示活动项目的数量
实现对这些信息的访问的最佳方式是什么?
我们一次可能会讨论多达 30 个活动项目,每个项目有 1 到 6 个任务(但许多步骤与相同的承包商),并且承包商通常总共有几个项目(活动或不活动)。
我的想法:
- 查看
current_contractor
作业 -> 步骤 -> 项目 -> 计算活动的 - 查看活动项目 -> 任务 -> 查找匹配的承包商
current_contractor
- 也许在每个作业中添加一个
belong_to :project
(我怎样才能确保它与self.step.project
?)能够跳转到 Contractor -> assignments -> projects & count
ruby-on-rails - 如何为用户获取所有嵌入的 mongoid 文档
在 Mongoid (Rails) 中,我有 3 个模型:File、Version和User。版本是 embedded_in File,并且File和Version都属于User (尽管对于File中的所有Version不一定相同)。
现在我想检索属于特定User或嵌入在属于同一User的File中的所有Version。
我试过了:
- 几乎任何东西
Version.<something>
,总是 0 结果(可能是因为Version不是顶级文档?) File.any_of(user: user, 'versions.user': user)
: NoMethodError: #<User:0x00000007cd9400> 的未定义方法 `bson_type'File.any_of(user: user, 'versions.user_id': user.id)
: 只返回属于User的File,而不是嵌入属于用户的Version的File
如何以数据库友好的方式实现这一点(不获取所有File并迭代它们的Version)?
ruby-on-rails - 需要帮助从多个表中设置关联 Rails4 mongoId
当老师设置他/她的可用性时,我在这里设置关联有问题。教师只能针对他/她注册的课程设置可用性。从 CourseType 表中预定义的课程列表。
在教师注册时,用户需要选择教师可以教授的课程。
所以对于教师来说,在设置可用性时,只有那些课程应该是可见的。
ruby-on-rails-4 - Rails 检查重复模型
我在我的 Rails 应用程序中犯了一个错误,我没有强制登录的唯一性。现在我想通过在我的代码中(手动)查找和删除重复项来清理这个烂摊子。
我可以在 Rails 控制台中输入一个很好的命令来让我找到那些重复项吗?例如。找到两个具有相同登录名的用户,也许制作一个重复数组?
ruby-on-rails - mongoid 范围找到错误的对话
我的模型有以下范围:
这试图找到两个人之间的对话,在我的控制器上我有以下操作:
这是我的问题:
我有 3 个以上的用户:
用户,A,B,C,D……任何人之间没有对话。我创建了用户A和用户B之间的对话。对话不存在,所以创建,然后如果用户A想与用户C开始对话,模型返回false,因为对话不存在,儿子我的控制器需要创建一个新的,但是,控制器打开了用户 A 和用户 B 之间的对话,但它必须在用户 A 和用户 C 之间创建一个新的对话,并打开这个对话。
我做错了什么??我尝试了不同的浏览器并清理了我的缓存。
更新:
创建第一个对话后,它总是显示第一个对话。我是说:
第一次对话
- 用户 A - 用户 B
尝试在以下用户之间创建其他对话:
- 用户 A - 用户 C,显示对话用户 A、B
- 用户 C - 用户 B,显示对话用户 A、B
- 用户 C - 用户 D,显示对话用户 A、B
ruby-on-rails - Mongoid - 查询嵌套对象并匹配数组
我的模型
现在我需要构建一些查询/范围。这个想法是项目有很多技能,项目经理希望能够找到一个拥有这些技能的人的列表
基本上:几个技能[skillA,skillB,skillC]与项目A相关联。项目经理想找到有能力的人
- 技能A和技能B
- 技能A或技能B
- (技能 A 和技能 B)或(技能 A 和技能 C)
是否可以定义一些不错的 mongoid 范围让我轻松做到这一点?
我看了一下这个问题,我想出了以下范围,但它只涵盖了上面提到的 3 个案例之一。
ruby-on-rails-4 - 如何在 Rails 4.2 中使用 secrets.yml 将密钥传递给 mongoid.yml?
这是我第一次使用 Mongoid,在测试/本地服务器中一切正常,但是在部署到 IBM Bluemix 时我遇到了困难(不要问我为什么选择 Bluemix,我知道如果我部署到它可能会更容易) Heroku 使用 Figaro。)
我正在使用它的 uri 连接到 MongoLab。
在我的 scerets.yml 中:
在我的 mongoid.yml
当我部署应用程序时,由于 uri 为 nil,暂存失败。 我知道这一点,因为我通过对 uri 进行硬编码进行了测试,并且它可以工作。
我目前没有在我的 .gitignore 中包含 mongoid.yml,所以如果我可以插入 uri:<%= Rails.application.secrets.mongo_url %>,我应该是安全的。
我还尝试将 uri 硬编码到 mongoid.yml 中并将其包含在 gitignore 中,但它给了我一些其他错误,我想知道哪种方法更好。
这是我收到的错误消息:
同样,这是因为我设置的 urisecrets.yml
在mongoid.yml
.
提前致谢!!
ruby-on-rails - 如何让具有枚举字段类型的模型通过规范测试 - Mongoid
编辑:根据@max 的建议,我将模型更改为使用枚举,但是我无法测试它的默认状态:
在模型中使用以下代码可以正常工作:
但这部分仍然失败:
请注意,我使用的是 Mongoid。我的模型规格中有这个:
旧问题 - 留作参考?
在我的模型中,我有这个:
然而还是不行。我试过删除 Mongoid 位但得到同样的错误:
Failure/Error: it { is_expected.to have_field(:published).of_type(Boolean).with_default_value_of(false) }
Expected Post to have field named "published" of type Boolean with default value of false, got field "published" of type Mongoid::Boolean
注意:我也试过:
并在我的模型中添加了以下方法:
然后
但似乎没有任何效果。我错过了什么?
ruby-on-rails - 仅当用户属于某种类型(使用 Enum,Mongoid)时,如何强制执行belong_to
我正在使用 Mongoid 和 Mongoid-Enum。
这是我的User
模型片段:
对于我的Voice
模型,我编写了一个测试(使用 Mongoid-rspec 网站中的示例),例如:
在我的Voice
模型中:
但是我无法通过测试。如何强制用户属于特定类型(艺术家,通过枚举)?