标签: mongoid

如何从rails应用程序上的ruby获取mongodb数据库和集合列表的列表

我正在使用Rails 3和Mongoid gem.但我需要用mongodb数据库列表填充一个组合框.在mongodb shell中,我们可以使用"show dbs"命令列出数据库.mongodb驱动程序中还有getDBNameList()和db.getCollectionNames()命令.但我无法弄清楚如何在rails应用程序上使用ruby中的这些命令.

我也在想; 如果我可以使用mongoid gem获取数据库和集合列表.因为我确信我已经读过mongoid支持使用多个数据库,但我认为它依赖于模型.

所以你怎么看; 有什么解决方案,或者我必须使用mongo-ruby-driver gem,而不是mongoid.

ruby-on-rails mongodb mongoid

11
推荐指数
2
解决办法
2万
查看次数

如何实现mongoid多对多关联?

我想将社交网络移植到Mongoid.朋友之间的联接表非常大.Mongoid有没有办法处理这个开箱即用的连接表?我已经看到了几个模型中的自己动手解决方案,但看起来并不高效.有办法处理这个吗?或者这是我不应该使用Mongoid的情况?

many-to-many ruby-on-rails mongoid

10
推荐指数
2
解决办法
6152
查看次数

使用mongoid在rails中转换模型属性的方法是什么?

我有mongoid和模型翻译的问题.当我尝试在我的模型上使用mongoDB时,我不知道要翻译属性和模型名称.它通常在*.yml文件中,但在这个时候这不起作用.有任何想法吗?

translation ruby-on-rails mongodb mongoid ruby-on-rails-3

10
推荐指数
2
解决办法
3556
查看次数

mongoid中的N + 1问题

我正在使用Mongoid在Rails中使用MongoDB.

我正在寻找的是积极的记录include.目前我没有在mongoid orm中找到这样的方法.

任何人都知道如何在mongoid或mongomapper中解决这个问题,这是另一个很好的选择.

ruby-on-rails mongodb mongomapper mongoid

10
推荐指数
4
解决办法
6188
查看次数

如何从Mongoid中的嵌入文档中排除字段?

我有一个包含嵌入标签的Post文档.有时我只显示帖子的标题及其标签.在这些情况下,我在mongoid中使用以下查询:

Post.only(:title).find(id)
Run Code Online (Sandbox Code Playgroud)

然后我将查询结果作为json发送给客户端.不幸的是,标签的bson id使得json比我需要的大得多.如何从查询中排除"_id"字段?

这是我的模特:

class Post
  include Mongoid::Document
  field :title, :type =>  String
  field :body, :type =>  String
  field :tags, :type =>  Array
  embeds_many :tags
end
class Tag
  include Mongoid::Document  
  field :tag, :type =>  String
  field :type, :type =>  String
  embedded_in :post
end
Run Code Online (Sandbox Code Playgroud)

ruby mongodb mongoid

10
推荐指数
1
解决办法
3219
查看次数

rails找不到database.yml

我刚刚删除了我,database.yml因为我正在尝试使用Mongoid,现在我得到以下内容:

$ rails server           
=> Booting WEBrick
=> Rails 3.0.9 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/application/configuration.rb:88:in `read': No such file or directory - /home/chris-kun/code/thirsty/config/database.yml (Errno::ENOENT)
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/application/configuration.rb:88:in `database_configuration'
        from /usr/lib/ruby/gems/1.9.1/gems/activerecord-3.0.9/lib/active_record/railtie.rb:58:in `block (2 levels) in <class:Railtie>'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
        from /usr/lib/ruby/gems/1.9.1/gems/activesupport-3.0.9/lib/active_support/lazy_load_hooks.rb:26:in `on_load'
        from /usr/lib/ruby/gems/1.9.1/gems/activerecord-3.0.9/lib/active_record/railtie.rb:57:in `block in <class:Railtie>'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/initializable.rb:25:in `instance_exec'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/initializable.rb:25:in `run'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/initializable.rb:50:in `block in run_initializers'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/initializable.rb:49:in `each'
        from /usr/lib/ruby/gems/1.9.1/gems/railties-3.0.9/lib/rails/initializable.rb:49:in …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails mongoid

10
推荐指数
1
解决办法
5073
查看次数

Mongoid和has_secure_password

我试图使用mongoid而不是活动模型使用rails 3.1身份验证

 class User 
  include Mongoid::Document
  include ActiveModel::SecurePassword
  has_secure_password  
  validates_presence_of :password, :on => :create
  attr_accessor :email, :password, :password_confirmation 
  field :email, :type => String
  field :password_digest, :type => String
 end
Run Code Online (Sandbox Code Playgroud)

问题是bycrypt无法识别password_digest,如在活动模型示例中http://railscasts.com/episodes/270-authentication-in-rails-3-1

谢谢

authentication mongoid ruby-on-rails-3.1

10
推荐指数
2
解决办法
4764
查看次数

Mongoid相当于ActiveRecord的`serialize`方法

希望这个标题非常明显.

我正在使用mongoidRails应用程序作为我的ORM,我想知道是否有人知道它是否与ActiveRecord的serialize方法等效.我查看了mongoid文档,但还没有找到任何东西.

以下是该模型的示例:

class Foo
  include Mongoid::Document

  field :params, type: String
  serialize :params            # method from ActiveRecord
end
Run Code Online (Sandbox Code Playgroud)

提前致谢!

ruby serialization mongodb mongoid ruby-on-rails-3

10
推荐指数
1
解决办法
2370
查看次数

Mongoid:如何仅通过引用加载延迟加载的对象的某些字段?

出于性能原因,我only()在编写mongoid查询时尽可能多地使用关键字来指定我要加载的字段.

通常的嫌疑人,例如,当我想要所有管理员的用户电子邮件仅用于显示目的时.

我会写:

User.where(:groups => :admins).only(:email).each do |u|
 puts u.email
end
Run Code Online (Sandbox Code Playgroud)

我这样做是因为我的用户模型中充满了很多数据,在列出一堆电子邮件时我很乐意忽略这些数据.

但是,现在让我们想象一下,我的用户是通过Project模型引用的,因此对于我可以做的每个项目:project.user.由于mongoid的延迟加载,我的对象用户只有在调用引用时才会被实例化(并从数据库中查询).

但是,如果我想列出所有管理项目所有者的所有电子邮件呢?

我会写这个:

Project.where(:admin_type => true).each do |p|
  puts p.user.email
end
Run Code Online (Sandbox Code Playgroud)

这里的主要问题是,这样做,我为每个项目加载整个用户对象,如果有很多项目匹配查询可能会变得非常沉重.那么我该如何只加载电子邮件呢?

我能做到这一点:

User.where(:_id => p.user_id).only(:email).first.email
Run Code Online (Sandbox Code Playgroud)

但这显然打败了简单做法的好语法的目的:

p.user.email 
Run Code Online (Sandbox Code Playgroud)

我希望我能写出类似的东西:p.user.only(:email).email但我不能.有任何想法吗 ?

亚历克斯

lazy-loading model-associations mongoid ruby-on-rails-3

10
推荐指数
1
解决办法
3230
查看次数

Mongoid 2.4通过Id失败查询嵌入式文档

我们有一个带有嵌入式项目的模型条目:

class Entry
  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::Spacial::Document
  embeds_many :items, cascade_callbacks: true
...

class Item
  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::Spacial::Document
  embedded_in :entry
...
Run Code Online (Sandbox Code Playgroud)

如果我按项目ID直接查询mongo:

{"items._id" : ObjectId("50536b18baa072000f000360")}
Run Code Online (Sandbox Code Playgroud)

它返回条目:

505363b36181ce00020006b1 {"created_at":"2012-09-14T17:04:51Z","items":[{"_ id":"50536b1a2b17b3 ...

然而,当我通过Mongoid查询时:

irb(main):002:0> Entry.where('items._id' => '50536b18baa072000f000360')[0]
=> nil
Run Code Online (Sandbox Code Playgroud)

所有其他查询都有效(对于项目和输入字段的其他字段).但不是为了id.

我们正在运行mongoid(2.4.12).

ruby-on-rails mongodb mongoid

10
推荐指数
2
解决办法
4271
查看次数