Tag: mongoid

mongoid多参数属性问题与日期

我一直在关注mongoid railscast,当我添加一个新的字段field :published_on, :type => Date时,我面临一个多参数属性问题field :published_on, :type => Date Article.find(“4da14b1447640b14eb000002”).published_on => nil 但是使用Article.find(‘4da14b1447640b14eb000002’) => published_on: nil, published_on(1i): “2011”, published_on(2i): “6”, published_on(3i): “10” 我如何获得欲望输出? 我知道有一个临时解决方案https://gist.github.com/315227 但是这个问题的问题已经关闭,我有最新的2.0.1 mongoid gem,但问题就出现了。

如何在mongoid中强制使用独特的嵌入式文档

我有以下型号 class Person include Mongoid::Document embeds_many :tasks end class Task include Mongoid::Document embedded_in :commit, :inverse_of => :tasks field :name end 我该如何确保以下内容? person.tasks.create :name => “create facebook killer” person.tasks.create :name => “create facebook killer” person.tasks.count == 1 different_person.tasks.create :name => “create facebook killer” person.tasks.count == 1 different_person.tasks.count == 1 即任务名称在特定人员中是唯一的 检查了索引上的文档后,我认为以下内容可能有效: class Person include Mongoid::Document embeds_many […]

使用Mongoid的嵌套表单出错

我在Rails 3上使用Mongoid并尝试构建嵌套表单。 我遇到的问题是当我使用accept_nested_attributes_for方法时,我收到此错误消息: undefined method `persisted?’ for []:Array 是否有其他人在Mongoid中遇到嵌套表单的问题? 我该怎么做才能解决它? 编辑:有关错误的更多信息。 这是完整的痕迹。 mongoid (2.0.0.beta.19) lib/mongoid/criteria.rb:156:in `send’ mongoid (2.0.0.beta.19) lib/mongoid/criteria.rb:156:in `method_missing’ mongoid (2.0.0.beta.19) lib/mongoid/associations/references_many.rb:113:in `send’ mongoid (2.0.0.beta.19) lib/mongoid/associations/references_many.rb:113:in `method_missing’ actionpack (3.0.1) lib/action_view/helpers/form_helper.rb:1280:in `fields_for_nested_model’ actionpack (3.0.1) lib/action_view/helpers/form_helper.rb:1273:in `fields_for_with_nested_attributes’ actionpack (3.0.1) lib/action_view/helpers/form_helper.rb:1155:in `fields_for’ simple_form (1.2.2) lib/simple_form/action_view_extensions/builder.rb:96:in `simple_fields_for’ app/views/users/profile.html.haml:16:in `_app_views_users_profile_html_haml__599717908_2187897020_0′

Mongoid:如何查询value为nil的所有对象?

我很难做一些事情,比如: Something.where(:field => nil) 要么 Something.where(:field => { ‘$eq’ => nil }) 什么是在Mongoid中处理这个问题的正确方法?

需要设计艺术家推荐的建议

我有以下场景。我需要向用户推荐艺术家。 该如何建模? 我正在寻找有关这方面的建议。 我刚在想。 基于以下标准: 当用户收听歌曲时,歌曲类型会以+1记录 当用户“喜欢”一首歌时,歌曲类型会以+2记录在某处 通过这种方式,我可以根据具有最高分的类型列出所有艺术家。 即使如此,我是否应该有一个名为“推荐”的新模型并将其嵌入到用户中? 我愿意接受各种建议。

如何找到属性foo或bar等于查询值的对象?

我搜索谷歌并查看了文档,但我没有找到这样的例子。 我有嵌入式子项的这个对象: { teacher: “Balthazar”, students: [ { name: ‘Wilfred’, sibling: ‘Cordelia’ }, { name: ‘Mortimer’, sibling: ‘Arthur’ }, { name: ‘Cordelia’, sibling: ‘Wilfred’ }, { name: ‘Arthur’ sibling: ‘Mortimer’ }, ] } 我想找到Balthazar的学生,他们的name或sibling在[‘Wilfred’, ‘Cordelia’, ‘foo’] 。 我让它以这种方式工作: criteria_a = balthazar.students.in(name: [‘Wilfred’, ‘Cordelia’]) criteria_b = balthazar.students.in(sibling: [‘Wilfred’, ‘Cordelia’]) criteria_a << criteria_b 但有没有更简洁的方法来链接标准? 我试过链接,但它不起作用。 它产生AND交集,而不是OR 。 […]

获取模型中当前用户详细信息的好方法是什么?

我在我的rails应用程序中使用了devise gem进行身份validation。 我想在after_create回调中获得有关当前用户的某些信息。 这怎么可能? 我的型号代码是: class Department field :name after_create :create_news private def create_news @user = current_user end end 但是当我创建新部门时,我得到了以下错误。 undefined local variable or method `current_user’ for # 最好的方法是什么?

将mongoid翻译成德语

我在mongoid中翻译默认validation消息时遇到了问题。 我创建了一个/config/initializers/mongoid.rb Mongoid.add_language( “德”) http://mongoid.org/docs/installation/languages.html 但是在validation字段上的每次调用都会出现翻译错误: 翻译缺失:de.mongoid.errors.models.comment.attributes.body.too_short 翻译缺失:de.mongoid.errors.models.user.attributes.username.blank 我有 Ruy on Rails 3.2 Ruby 1.9.3 mongoid 2.4.7

更改Mongoid中的字段类型而不会丢失数据

如何在不丢失任何数据的情况下运行迁移以更改Mongoid / MongoDB中字段的类型? 在我的情况下,我试图从BigDecimal(存储为字符串)转换为整数来存储一些钱。 我需要将字符串十进制表示转换为整数的美分。 我不想丢失现有数据。 我假设步骤可能是这样的: 使用新名称创建新的整数字段,例如amount2 部署到生产并运行迁移(或rake任务),将每个amount转换为amount2的正确值 (这整个时间现有代码仍在使用amount ,从用户的角度来看没有停机时间) 将网站停下来进行维护,再次运行迁移以捕获在过去几分钟内可能已更改的任何amount字段 删除amount并将amount重命名为amount 部署期望amount为整数的新代码 带回网站 看起来Mongoid提供了一种rename方法: http ://mongoid.org/docs/persistence/atomic.html#rename 但我有点困惑如何使用它。 如果您有一个名为amount2的字段(并且您已经删除了amount ),您是否只运行Transaction.rename :amount2, :amount ? 然后我想这会立即打破基础表示,所以你必须在那之后重启你的应用服务器? 如果您在amount仍然存在的情况下运行会发生什么? 是否会被覆盖,失败或尝试自行转换? 谢谢!

在mongoid中通过'<<'分配嵌入项时触发on_save?

我想知道是否有办法在Mongoid映射器中的embedded_in对象上触发after_save回调。 例: i = Image.new(:file => file) user.images < i.after_save should be triggered here 我知道如果我在单词之后调用i.save ,它会触发,但是在我的代码中很难记住这样做。 此外,调用user.images.create(:file => file)不是一个选项,因为我会检查以确保相同的文件不会上载两次。