Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails中使用MongoID保存二进制数据_Ruby On Rails_Mongodb_Mongoid - Fatal编程技术网

Ruby on rails 在Rails中使用MongoID保存二进制数据

Ruby on rails 在Rails中使用MongoID保存二进制数据,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,这似乎应该是直截了当和有效的。MongoDB/BSON有一个本机二进制类型,Moped驱动程序支持它。但是当我尝试在rails项目中创建脚手架时 rails g scaffold image png:binary source:string 我得到这个模型: class Image include Mongoid::Document field :png, type: Binary field :source, type: String end 这将生成此错误: uninitia

这似乎应该是直截了当和有效的。MongoDB/BSON有一个本机二进制类型,Moped驱动程序支持它。但是当我尝试在rails项目中创建脚手架时

rails g scaffold image png:binary source:string
我得到这个模型:

class Image
  include Mongoid::Document
  field :png, type: Binary
  field :source, type: String
end
这将生成此错误:

uninitialized constant Image::Binary

使用Rails 3.2.8和Mongoid 3.0.9。

您需要使用
Moped::BSON::Binary
类型:

class Image
  ...
   # mongoid version <= v3 
  field :png, type: Moped::BSON::Binary
   # mongoid version >= v4 
  field :png, type: BSON::Binary
end


i = Image.new
# mongoid version <= v3 
i.png = Moped::BSON::Binary.new(:generic, <image data> ) 

# mongoid version >= v4 
i.png = BSON::Binary.new(:generic, <image data> ) 
类图像
...
#mongoid版本=v4
字段:png,类型:BSON::Binary
结束
i=Image.new
#mongoid版本=v4
i、 png=BSON::Binary.new(:generic,)

mongoid似乎不支持
Binary
类型:请尝试将
Binary
更改为
BSON::Binary
?谢谢--这使模型工作正常,但视图仍然被破坏。在这里找到了后续问题的解决方案:很好!你愿意接受这个答案吗?(很抱歉引用了错误的字段)干杯!我还需要使用
Moped::BSON::Binary
类型更新。一个小问题:对于mongoid>=v4,您切换了参数的顺序。正确的顺序是:
BSON::Binary.new(,:generic)