标签: mongoid

Factory Girl + Mongoid嵌入式文件夹具

假设您有以下mongoid文档:

class User
    include Mongoid::Document
    embeds_one :name
end

class UserName
    include Mongoid::Document
    field :first
    field :last_initial

    embedded_in :user
end
Run Code Online (Sandbox Code Playgroud)

你如何创建一个工厂女工厂,初始化嵌入的名字和最后的名字?你也将如何处理这种embeds_many关系呢?

embed ruby-on-rails fixtures mongoid factory-bot

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

Mongoid 3 + Heroku(MongoHQ)导致Moped :: Errors :: OperationFailure

使用Rails 3,从Mongoid 2.x升级到Mongoid 3.x后,我的Heroku + MongoHQ设置停止工作.有趣的是,我的开发和测试框架以及我的整个测试套件都通过了.

我怀疑问题出在我的mongoid.yml文件中,但我已经尝试搜索文档,google和stackoverflow,并使用了所有建议的格式,包括:heroku mongohq和mongoid Mongo :: ConnectionFailure或实际上:https:/ /gist.github.com/2900804

更新7月16日:这是我的mongoid.yml文件看起来的样子,在尝试了多个事情之后 + 来自MongoHQ的Jason建议:

development:
  sessions:
    default:
      database: development
      hosts:
        - localhost:27017

test:
  sessions:
    default:
      database: test
      hosts:
        - localhost:27017

production:
  sessions:
    default:
      uri: <%= ENV['MONGOHQ_URL'] %>
      options:
        skip_version_check: true
        safe: true
Run Code Online (Sandbox Code Playgroud)

(根据我的理解,它基本上与上面链接中的相同,除了它使用uri;我尝试了另一种方式,将MONGOHQ_URL分成单独的字段,但它没有帮助)

我已经尝试将mongoid设置为3.0.0rc并将版本留空在我的Gemfile中.由于HTTPS证书或其他原因,使用github版本失败,所以我没有多次尝试它.

动作控制器所说的是:

Moped::Errors::OperationFailure in Home#index

Showing /app/app/views/home/index.html.haml where line #2 raised:

The operation: #<Moped::Protocol::Command
  @length=68
  @request_id=4
  @response_to=0
  @op_code=2004
  @flags=[:slave_ok]
  @full_collection_name=".$cmd"
  @skip=0
  @limit=-1
  @selector={:count=>:posts, :query=>{}}
  @fields=nil>
failed with error "db assertion …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku mongodb mongoid mongohq

36
推荐指数
1
解决办法
7169
查看次数

如何查看Mongoid的原始mongoDB查询

我按照此页面查看了mongoDB查询.结果我可以看到Moped日志.
但是我看不到原始的mongoDB查询.
如何在rails控制台/服务器中显示MongoDB查询

我确实喜欢以下.

# in [rails root]/config/environments/development.rb    
Mongoid.logger.level = Logger::DEBUG
Moped.logger.level = Logger::DEBUG
Mongoid.logger = Logger.new("#{Rails.root}/log/mongoid_development.log")
Moped.logger = Logger.new("#{Rails.root}/log/moped_development.log")

# in [rails root]/log/mongoid_development.log
# show nothing.

# in [rails root]/log/moped_development.log
MOPED: [ip address]:27017 QUERY        database=[database name] collection=[collection name] selector={"$query"=>{"screen_name"=>"ts_3156"}, "$orderby"=>{:_id=>1}} flags=[:slave_ok] limit=-1 skip=0 batch_size=nil fields=nil (54.6286ms)
Run Code Online (Sandbox Code Playgroud)

如何查看Mongoid的原始mongoDB查询?
我希望看到如下所示.

db.[collection name].find({ $query: {"screen_name"=>"ts_3156"}, $orderby: {:_id=>1} })
Run Code Online (Sandbox Code Playgroud)

我可以在/var/log/mongo/mongo.log中看到原始的mongoDB查询.
但我希望在ORM(Mongoid)的日志中看到原始查询.

ruby-on-rails mongoid mongodb-query

36
推荐指数
2
解决办法
7569
查看次数

Mongoid Rails 4按asc或desc命令created_at排序

我有一个使用Mongoid的rails 4 app.我想做一些基本的事情是根据索引视图中的字段created_at以降序显示我拥有的书模型.在控制器books_controller.rb中:

def index
  @books = Book.order_by(:created_at.desc)
end
Run Code Online (Sandbox Code Playgroud)

这不起作用.我还尝试了以下2个不起作用:

@books = Book.find :all, :order => "created_at DESC"

Book.find(:all, :order => "created_at DESC").each do |item|
  @books << item
end
Run Code Online (Sandbox Code Playgroud)

在视图中我有这样的事情:

<% @books.each do |b| %>
  ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

谢谢.

sorting date mongoid ruby-on-rails-4

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

Mongo ID导致可怕的URL

这可能听起来像一个微不足道的问题,但对于面向消费者的应用程序来说这是非常重要的

什么是最简单的方法和最可扩展的方式将可怕的mongo id映射到一个友好的id?

xx.com/posts/4d371056183b5e09b20001f9

xx.com/posts/a

中号

mongodb mongoid

33
推荐指数
3
解决办法
7553
查看次数

Mongoid finders无法正常工作?

我已经设置了rails3 + mongoid应用程序,当我打开rails控制台时,没有一个查找器似乎工作 - http://d.pr/FNzC

User.all
User.find(:all, :conditions => { first_name => "John" })
Run Code Online (Sandbox Code Playgroud)

两者都回归:

#<Mongoid::Criteria
  selector: {},
  options:  {}>
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?

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

32
推荐指数
1
解决办法
6882
查看次数

Heroku的Rails,Mongoid和Unicorn配置

我正在使用Mongoid 3,使用Rails 3.2.9和Unicorn进行制作.想为mongodb建立一个before_fork和after_fork,找到以下代码进行活动记录:

before_fork do |server, worker|
  # Replace with MongoDB or whatever
  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.connection.disconnect!
    Rails.logger.info('Disconnected from ActiveRecord')
  end
end

after_fork do |server, worker|
  # Replace with MongoDB or whatever
  if defined?(ActiveRecord::Base)
    ActiveRecord::Base.establish_connection
    Rails.logger.info('Connected to ActiveRecord')
  end
end
Run Code Online (Sandbox Code Playgroud)

Mongoid的相关代码是什么(连接和断开连接)?

更新:

你真的不需要这样做,所以对于想要查看这个问题的人看到:

http://mongoid.org/en/mongoid/docs/rails.html

"独角兽和乘客

当使用Unicorn或Passenger时,每次使用app预加载或智能生成时分叉子进程,Mongoid将自动重新连接到master数据库.如果您手动在应用程序中执行此操作,则可以删除代码."

虽然知道什么是等效的Mongoid代码仍然很有趣.

ruby-on-rails heroku mongodb unicorn mongoid

31
推荐指数
1
解决办法
3271
查看次数

使用mongod在utc中存储日期时如何处理时区问题?

我有一个mongodb集合,其中每个文档都有一些属性和一个utc时间戳.我需要从集合中提取数据并使用聚合框架,因为我使用集合中的数据在用户界面上显示一些图表.但是,我需要根据用户的时区进行聚合.假设我知道用户的时区(通过浏览器或其他方式传递请求),有没有办法使用聚合框架根据[客户端]时区进行聚合?

timezone mongodb mongoid aggregation-framework

31
推荐指数
3
解决办法
5万
查看次数

Mongoid/Mongodb并查询嵌入式文档

我有AuthorBook模特.

一个Author有许多嵌入式Books.

我可以查询嵌入式Books,还是我必须Authors首先获取Books

ruby-on-rails mongodb mongoid

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

如何在没有"each"块的情况下从Mongoid :: Criteria获取结果数组

我们的应用程序非常大量地使用ajax,因此我们var items = #{@items.to_json}在所有视图中都有语句.现在@items正在控制器中设置为@items=Item.all.问题是,它@items是一个Mongoid::Criteria,它没有.to_json方法.因此,渲染视图时会出现错误.是否有一种简单的方法可以将此条件对象转换为数组,而无需使用类似的代码@items.collect {|i| i}

arrays criteria mongoid

28
推荐指数
1
解决办法
8826
查看次数