情况是这样的。userembed_oneprofileprofilebelongs_tocity我用填充了一个城市表idasIntegernameasString现在我在做user.update_attributes(:profile_attributes{:city_id=>"5"})模拟浏览器表单提交。然后我检查user.profile我看到city_id存储为字符串。这使我的user.profile.city变为nil。我想知道在这里做什么是正确的。我应该让我的城市ID是字符串还是BSON对象?或者我应该尝试拦截update_attributes以使mongoid将city_id
当我尝试使用railsgeneratemongoid:config时出现以下错误找不到生成器mongoid:config。如果我指定gem'mongoid','3.1.4',它会给我以下信息:Bundlercouldnotfindcompatibleversionsforgem"activemodel":InGemfile:mongoid(=3.1.4)x86-mingw32dependsonactivemodel(~>3.2)x86-mingw32rails(=4.0.0.rc2)x86-mingw32dependsonactivemodel(4.0.0.rc2)请帮忙。谢谢!gem
我正在尝试在RoR上构建一个应用程序,该应用程序通过Mongoid使用MongoDB作为主要对象,但有一个喜欢和不喜欢通过Opinions使用Redis的过程https://github.com/leehambley/opinions/.它有点工作,但是当我在我的对象上运行这些方法时,我只是收到一个错误“undefinedmethod‘like_by’”,我认为这些方法应该是自动生成的。我的模型看起来像:classPunchlineincludeMongoid::DocumentincludeOpinions::Pollableopinions:like,:dislikefield:k
我正在创建一个部署在AWS上的RubyonRails网站。我遇到了配置问题,我似乎找不到涵盖所提到的各种工具的配置以及如何设置它们以便于在开发(在本地主机上)和部署时使用的文档/教程。现在我已经设置了一个Rails应用程序,我正在为我所有的Rubygem使用Bundler。我有两个主要目标。易于开发-理想情况下,只需克隆存储库并运行“railsserver”就可以了。Redis服务器、Resqueworker、MongoDB数据库等所有其他东西都应该自动启动/创建。易于部署-给定一些配置文件(如YAML文件),我应该能够通过简单地运行“capproductiondeploy”或类似的东
我有一个使用Mongoid5.2.0的Rails4.2.8应用程序。我想在不更新数据库的情况下更新记录。基本上,我想模仿User.new(user_params),但不是为了更新。现在,ActiveRecord有assign_attributes方法,但是Mongoid版本似乎无论如何都要更新数据库!这是错误还是有其他方法可以达到此目的? 最佳答案 与@Ekkstein相同-在比请求者使用的更新的Mongoid上为我工作。文档有一个方法update_attributes,见https://mongoid.github.io/old/
我有两个集合:新闻和订阅。每个新闻项目都有一个字符串数组——“标签”。每个订阅者也有这样的“标签”。Subscribe的新闻条目是具有subscribe所具有的所有标签的条目,并且可能更多。新闻项目的订阅者是具有该项目的任何标签的订阅者,但没有更多。当我想获取订阅的新闻时,我在RubyMongoID上执行这样的请求:NewsItem.where(:tags.all=>@subscribe.tags)我怎样才能获得某些新闻项目的所有订阅?例如:item.tags=["foo","bar"]subscribe1.tags=["foo"]subscribe2.tags=["bar"]subs
classCartincludeMongoid::Documentembeds_many:cart_itemsdefcalculate_prices#Setsomefieldsenddefremove_item(item)#whatgoeshere?calculate_pricessaveendendclassCartItemincludeMongoid::Documentembedded_in:cartend我希望remove_item以原子方式从购物车中删除购物车商品,并在购物车集合的一次更新中设置一些新价格。这可能吗?也许有一些API可以将嵌入的商品标记为销毁然后保存购物车?
我正在使用Sinatra和Mongoid访问MongoDB。它的大部分工作正常,除了当我尝试删除一个对象时,该对象被删除但似乎保留在数据库中。u=User.find(user_id)u.delete这似乎有效并且不会产生错误,但是当我使用Mongo控制台检查数据库以确认这一点时,该对象仍然存在。用户对象不在上限集合中。u=User.find(user_id)u.deleteu=User.find(user_id)此更改确实会产生错误,这意味着对象已成功删除。尽管如此,在Mongo控制台中,对用户集合的find()调用仍会显示该对象。 最佳答案
我正在尝试使用mongoid但它输出了这个错误:uninitializedconstant'Mongo'这是我的代码:require"mongoid"Mongoid.configuredo|config|config.master=Mongo::Connection.new("localhost",27017).db("arthist")endclassArtistincludeMongoid::Documentfield:name,type:Stringenda=Artist.create(name:"hoge")你有什么想法吗? 最佳答案
我的表格中有这个:=f.input:location_id,:collection=>@locations,:include_blank=>false,:selected=>@video.location这对我的"new"View/操作来说效果很好,我看到了一个不错的位置列表可供选择。但是,在我的编辑View中,我没有看到位置列表,而是看到一个输入字段,就好像它是一个字符串,如下所示:Location:4ebbc0f8e0ed180e91000002为什么我看不到我的收藏有什么想法吗?编辑:想通了,我必须这样做:=f.input:location_id,:collection=>@lo