Ruby on rails 在Rails中使用MongoID保存二进制数据
这似乎应该是直截了当和有效的。MongoDB/BSON有一个本机二进制类型,Moped驱动程序支持它。但是当我尝试在rails项目中创建脚手架时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
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)