标签: mongoid

rails g给出了未初始化的常量Rack :: Mongoid

当我运行'rails g'时,我收到此错误(我的应用似乎运行正常,但我需要使用生成器):

      /home/love/mongodb.roger/.bundler/ruby/1.8/gems/activesupport-3.0.9/lib/active_support/inflector/methods.rb:113:in `constantize': uninitialized constant Rack::Mongoid (NameError)
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/activesupport-3.0.9/lib/active_support/inflector/methods.rb:112:in `each'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/activesupport-3.0.9/lib/active_support/inflector/methods.rb:112:in `constantize'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:14:in `klass'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:33:in `build'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:79:in `build'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:209:in `inject'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:79:in `each'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:79:in `inject'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/actionpack-3.0.9/lib/action_dispatch/middleware/stack.rb:79:in `build'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:162:in `build_middleware_stack'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application/finisher.rb:35
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/initializable.rb:25:in `instance_exec'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/initializable.rb:25:in `run'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/initializable.rb:50:in `run_initializers'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/initializable.rb:49:in `each'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/initializable.rb:49:in `run_initializers'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:134:in `initialize!'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:77:in `send'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:77:in `method_missing'
           from /home/love/mongodb.roger/config/environment.rb:7
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/application.rb:103:in `require_environment!'
           from /home/love/mongodb.roger/.bundler/ruby/1.8/gems/railties-3.0.9/lib/rails/commands.rb:16
           from script/rails:6:in `require'
           from script/rails:6
Run Code Online (Sandbox Code Playgroud)

我使用1.8.7(但是当我使用1.9.x和RVM时我也会收到此错误).

ruby -v 
ruby …
Run Code Online (Sandbox Code Playgroud)

ruby rack ruby-on-rails mongoid ruby-on-rails-3

0
推荐指数
1
解决办法
2235
查看次数

为什么mongoid在我的模型上抛出未定义的方法`field'?

我有以下内容:

class Email
  include ::Mongoid::Timestamps
  include ::Mongoid::Document

  field :email_address, :type => String
  field :user_id, :type => Integer
  field :campaign, :type => String
  field :stream, :type => String
  field :component, :type => String
  embeds_many :actions
end
Run Code Online (Sandbox Code Playgroud)

并且rails抱怨它无法找到字段方法定义.有人知道为什么吗?

mongoid ruby-on-rails-3

0
推荐指数
1
解决办法
1331
查看次数

在mongodb和rails 3中的ActAsTaggableOn

我想在我的应用程序中添加标记工具.所以,我正在使用acts_as_taggable_on:https://github.com/mbleigh/acts-as-taggable-on

我添加了以下行我的Gemfile:

gem 'acts-as-taggable-on', '~> 2.2.2'
Run Code Online (Sandbox Code Playgroud)

当我在我的用户模型中添加以下行时:

acts_as_taggable_on
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:

undefined local variable or method `acts_as_taggable_on' for User:Class
Run Code Online (Sandbox Code Playgroud)

请告诉我,我做错了什么?

mongodb acts-as-taggable-on mongoid ruby-on-rails-3

0
推荐指数
1
解决办法
845
查看次数

如果没有添加新文档,请检查集合中是否存在文档

我正在使用MongoDB和PHP来存储用户通过基本表单添加的歌曲.我创建的集合如下所示.

$object = array(
    "trackName" => "Sju sorger",
    "artistName" => "Veronica Maggio",
    "albumName" => "Satan i Gatan",
     );
$collection->save($object);
Run Code Online (Sandbox Code Playgroud)

我想要完成的是检查一首歌是否已经在该集合中.如果试图添加的歌曲用户尚未加入该集合,则会添加该歌曲.如果它已经在集合中,则将显示声明该歌曲已在该集合中的通知.

我是MongoDB的新手,但我想我可以通过检查文档的_id来检查歌曲是否已经在集合中.但我不知道如何实现这一目标.

任何帮助将非常感激.

php mongodb mongoid

0
推荐指数
1
解决办法
6401
查看次数

使用Mongoid配置CarrierWave - GridFS

我遇到了麻烦,尝试使用CarrierWave在Rails 3中开发的文件上传Rest API,使用MongoDB数据库.

我想要做的是使用MongoDB系统GridFS存储一些文件(不仅是图像,而且是每种文件格式).我阅读了许多建议我使用CarrierWave gem的文档.

但是当我尝试配置它时出错.

我的开发环境:Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.8'

# MongoDB
gem 'mongoid', :git => 'git://github.com/mongoid/mongoid.git'
gem 'carrierwave', :git => "git://github.com/jnicklas/carrierwave.git"
# gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'
gem 'mini_magick', :git => 'git://github.com/probablycorey/mini_magick.git'

gem 'bson_ext'
gem 'json'
Run Code Online (Sandbox Code Playgroud)

application.rb:

require File.expand_path('../boot', __FILE__)

# ActiveRecord will not be use with MongoDB
# require 'rails/all'
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "rails/test_unit/railtie"
require "sprockets/railtie"
require "mongoid/railtie"
require "carrierwave"
# require "carrierwave/mongoid"
Run Code Online (Sandbox Code Playgroud)

我用mongoid.yml(config/mongoid.yml)文件定义数据库:

development:
  sessions:
    default:
      database: lf_rest_api_development
      hosts:
        - localhost:27017 …
Run Code Online (Sandbox Code Playgroud)

mongodb gridfs mongoid carrierwave ruby-on-rails-3.2

0
推荐指数
2
解决办法
4270
查看次数

如何对mongoid文件数组进行排序(数组包含不同的mongoid文档类型)?

我有两个Mongoid文档,FirstType文档和SecondType文档数组.两者都嵌入了User.

user.first_types  =  [#<FirstType _id: 51a10b4883c336ebef0002a8, created_at: 2013-05-25 19:04:40 UTC, updated_at: 2013-05-25 19:04:40 UTC, datetime: 2013-03-28 15:03:22 UTC, text: "Hello 1">]
user.second_types = [#<SecondType _id: 51a6058783c3368a62000003, created_at: 2013-05-29 13:41:27 UTC, updated_at: 2013-05-29 13:41:27 UTC, datetime: 2013-05-29 08:23:27 UTC, text: "Hello 2">]
Run Code Online (Sandbox Code Playgroud)

然后我将它们与这行代码合并:

all_types = user.first_types+user.second_types
Run Code Online (Sandbox Code Playgroud)

我现在希望按属性排序all_types数组datetime(最新的datetime,所以SecondType对象应该是第一个).

我已经尝试过传统的Mongoid和Ruby数组方法,但是当我混合使用Mongoid文档时它们似乎不起作用.有任何想法吗?

ruby arrays sorting mongodb mongoid

0
推荐指数
1
解决办法
857
查看次数

使用Mongoid和ActiveRecord的成本/收益是多少?

Google搜索使我想到一些问题,希望同时使用Mongoid和activerecord。我已经看到了很多关于木乃伊的问题和很多关于ActiveRecord的问题,但是都没有将它们进行比较。

我想问题是,与用于MySQL的activerecord一起运行带有针对mongoid db的rails的mongoid适配器有什么好处?

ruby activerecord ruby-on-rails mongoid

0
推荐指数
1
解决办法
1659
查看次数

Mongo :: Collection undefined方法`insert'

我正在尝试将数百万行从另一个数据库导入MongoDB.我的常规用于导入

MyModel.collection.insert(data_to_import)
Run Code Online (Sandbox Code Playgroud)

我明白了

NoMethodError: undefined method `insert' for #<Mongo::Collection:0x000000082bb990>
/home/mika/projects/ca2/lib/tasks/data.rake:36:in `block (2 levels) in <top (required)>'
/home/mika/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `eval'
/home/mika/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `<main>'
Run Code Online (Sandbox Code Playgroud)

该模型定义为

class MyModel
  include Mongoid::Document
  include Mongoid::Attributes::Dynamic

end
Run Code Online (Sandbox Code Playgroud)

有没有人对正在发生的事情有任何建议?

我可以逐行保存行,但这对于数百万行来说效率很低.想要插入工作.

mongoid

0
推荐指数
1
解决办法
1172
查看次数

插入许多 mongo - 继续出错 ruby​​ / Ruby Mongo 等效于 mysql 插入忽略

嗨,当我尝试继续出错以插入许多它在 mongoid 中不起作用时。

我设置了以下唯一索引

db.push_notifications.createIndex({ actor_vid: 1,campaign_id: 1 },{ unique: true, partialFilterExpression: { campaign_id: { $exists: true } } })

PushNotification.collection.insert_many([{:campaign_id => "1",:actor_vid => 9},{:campaign_id => "1",:actor_vid => 8}],:continue_on_error => true,:safe =>错误的)

PushNotification.collection.insert_many([{:campaign_id => "1",:actor_vid => 9},{:campaign_id => "1",:actor_vid => 10}],:continue_on_error => true,:safe =>假)抛出

Mongo::Error::BulkWriteError: Mongo::Error::BulkWriteError 来自 /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/mongo/bulk_write/result.rb: 184:in validate!' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/mongo/bulk_write/result_combiner.rb:73:inresult' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/mongo/bulk_write.rb:65:in execute' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/mongo/collection.rb:385:inbulk_write' from /home/deploy/。 bundler/notification_service/ruby/2.2.0/gems/mongo-2.2.5/lib/mongo/collection.rb:363:in insert_many' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/mongoid-5.1.3/lib/mongoid/query_cache.rb:168:ininsert_many_with_clear_cache' from (irb):133 from /home/deploy/.bundler/notification_service/ruby/ 2.2.0/gems/railties-4.2.6/lib/rails/commands/console.rb:110:in start' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/railties-4.2.6/lib/rails/commands/console.rb:9:instart' from /home/deploy/.bundler/notification_service/ruby/2.2.0/gems/railties-4.2。 6/lib/rails/commands/commands_tasks.rb:68:inconsole' from …

mongodb mongoid ruby-on-rails-3

0
推荐指数
1
解决办法
1014
查看次数

覆盖模型中的保存方法

我是 Ruby/Rails 的新手,我想覆盖该save方法,这样我就可以在调用实际save方法之前对自己进行一些检查,但是,由于某种原因,我收到了此异常:

#<NoMethodError: undefined method `save' for true:TrueClass>
Run Code Online (Sandbox Code Playgroud)

这是我的模块和类的代码。

模块:

module OverrideSave

    def save
        super.save if some_condition_true
    end
  end
Run Code Online (Sandbox Code Playgroud)

班级:

class CardTransaction
  include Mongoid::Document
  include Mongoid::Timestamps::Created
  prepend OverrideSave

  field :type, type: String
  field :transaction_value, type: BigDecimal
  field :receipt_value, type: BigDecimal
  field :store_id, type: String

  belongs_to :card
end
Run Code Online (Sandbox Code Playgroud)

我不确定出了什么问题,有什么想法吗?

ruby ruby-on-rails mongoid

0
推荐指数
1
解决办法
1233
查看次数

Ruby:用'.'转换字符串.符号

我有这个字符串:'industry.in'我想将其转换为:industry.in.当我这样做时'industry.in'.to_sym,结果是::"industry.in".

任何人都知道如何进入::industry.in相反?

我这样做,所以我可以在Mongoid中为数组字段进行条件查询:

criteria = 'industry.in'.to_sym    
Company.where(criteria => ['Information Technology'])
Run Code Online (Sandbox Code Playgroud)

ruby mongoid

-2
推荐指数
1
解决办法
209
查看次数

无法批量分配受保护的属性:title,description,cloth_type,pic Rails 3

当对/ cloth/create进行POST时,我得到一个警告:无法批量分配受保护的属性:title,description,cloth_type,pic

cloth.rb

class Cloth   
  include Mongoid::Document   
  include Mongoid::Timestamps 
  include Mongoid::MultiParameterAttributes   attr_accessible :pics

  field :title   
  field :description   
  field :cloth_type   
  belongs_to :seller   
  has_many :pics

  attr_accessible :pic_attributes   
  accepts_nested_attributes_for:pics
end
Run Code Online (Sandbox Code Playgroud)

pic.rb

class Pic   
  include Mongoid::Document
  include Mongoid::Paperclip  

  has_mongoid_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" },
  :storage => :cloud_files,
  :cloudfiles_credentials =>  "#{Rails.root}/config/rackspace.yml",
  :path => ":attachment/:id/:timestamp_:style.:extension"

  belongs_to :cloth
  attr_accessible :cloth_attributes

  def create        
    @cloth = Cloth.create!(params[:cloth])  
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails mass-assignment mongoid ruby-on-rails-3

-4
推荐指数
1
解决办法
768
查看次数