草庐IT

Mongodb - 从数组、匹配项属性或子数组项属性聚合项

全部标签

ruby-on-rails - 如何通过 HTTParty 通过 PUT 请求发送空数组?

我有一个具有“名称”属性和“标签”属性的照片类。我的目标是在Rails中实现一个更新功能,用输入的内容替换照片的标签。例如,如果我尝试PUT一个将“标签”设置为[]的JSON对象,我希望从照片中清除任何标签。但是,当我通过HTTParty提交一个空数组作为主体参数之一时,我相信HTTParty正在将[]翻译成nil。因此,我的Rails后端的photos#update端点没有接收到任何参数“tags”。我正在寻找一种方法让HTTParty不将[]转换为nil,因为我失去了从照片中删除标签的能力。 最佳答案 这是Rails4中的一个错

ruby - 用于简单数组操作的慢速 Ruby

我按照Cormen的“算法导论”中的伪代码,在Ruby中创建了简单的插入排序实现:defsort_insert(array)(1...array.length).eachdo|item_index|key=array[item_index]i=item_index-1whilei>=0&&array[i]>keydoarray[i+1]=array[i]i-=1endarray[i+1]=keyendarrayend它有效,但执行速度非常慢。对于约20k个元素的数组array=((0..10_000).to_a*2).shuffle,排序大约需要20秒。我只测量这个方法调用的时间,没有

ruby - 为什么 Ruby 的 splat 在组合数组时比使用 + 组合数组慢?

我大胆猜测将一个数组拼成另一个数组比将两个数组加在一起更快,但经过快速基准测试后我发现我错了。我假设解释器只会将splat转换为数组文字,而不必每次都对其调用+方法。那么,为什么+比splat更快?我使用了这个基准代码:deftest(trials=1000)head=[1,2,3]tail=100.times.to_at=Time.now.to_ftrials.timesdo|i|a=[head,*tail]endputs"splatdonein#{Time.now.to_f-t}"t=Time.now.to_ftrials.timesdo|i|a=head+tailendputs"

ruby-on-rails - 计算数组中的项目跨越数千条记录的 100 条

我有一个带有Postgres数据库的Rails应用程序,该数据库有一个带有jsonbgenres列的Artists表。有几十万行。该行中的每个流派列都有一个类似["rock","indie","seenlive","alternative","indierock"]的数组,其中包含不同的流派。我想要做的是在所有行中以JSON格式输出每种类型的计数。类似于:{"rock":532,"powermetal":328,"indie":862}有没有办法有效地做到这一点?更新...这是我目前得到的...genres=Artist.all.pluck(:genres).flatten.delet

ruby - @property 或 self.property 使用访问器设置属性?

哪个是更好的做法;通过@property或self.property使用访问器操作属性? 最佳答案 如果您只是使用直接访问器,那么请坚持使用@property(除非您来自Python并且被@sigilhehe关闭)否则:这完全取决于您。但是self.property在某些需要确保属性已初始设置的情况下很有用:defproperty@property||=[]end#don'tneedtocheckif@propertyis`nil`firstself.property另请注意,在@property上使用self.property会产

ruby - ActiveRecord,通过多态属性查找

有这个:classEventtrueenduser=User.create!我可以:Event.create!(:historizable=>user)但我不能:Event.where(:historizable=>user)#Mysql2::Error:Unknowncolumn'events.historizable'in'whereclause'我必须改为这样做:Event.where(:historizable_id=>user.id,:historizable_type=>user.class.name)更新重现问题的代码:https://gist.github.com/fg

ruby - 输出液体模板中的可用对象和属性

有没有办法在liquidtemplate中输出(用于调试/信息目的)可用对象和对象属性??也就是说,假设我正在使用jekyll站点生成工具,并且我在我的index.html模板中(据我所知,这是一个液体模板)。它可能看起来像这样{%forpostinsite.posts%}{{post.date|date_to_string}}»{{post.title}}{%endfor%}是否有任何我可以使用的模板标签会告诉我/输出名为post的变量在此模板(以及其他模板)中可用。此外,是否有任何模板标签可以告诉我post对象具有键date、title、url、摘录、永久链接等

ruby-on-rails - Ruby 中属性和 base_attributes 之间的区别?

我见过几个模型定义了一个静态方法self.base_attributes{:object=>[]}end还有一些模型定义了静态方法self.attributes@@attributes={}end属性和基本属性到底有什么区别? 最佳答案 在您的示例中,您无需了解更多代码,self.attributes方法使用类变量(@@attributes),这意味着您可以添加在运行时给它更多的属性。因为您的base_attributes是硬编码的。我怀疑你看到的是这样的东西:base_attributes.merge(attributes)这可能

ruby - 如何更优雅地删除 Ruby 数组所有元素中的重复项?

我想删除Array对象中的重复项目。最好举例说明。我有以下数组entries=["abc","ab","c","cd"]我想要一种方法,通过从Array中的元素中删除重复项来清理它,并返回一个Array,每个唯一项都有一个元素。所以这是我为此编写的方法:classArraydefclean_up()self.join("").split("").uniqendend所以现在当我调用entries.clean_up时,我得到以下结果:["a","b","c","d"]这正是我想要的结果,但是在Ruby中有更优雅的方法吗? 最佳答案 s

ruby-on-rails - 序列化时无法将空数组保存到数据库

在RubyonRails中,如果数组为空,则具有序列化数组字段的模型将不会在.save()上更新,而它之前有数据。我正在使用:ruby2.2.1rails4.2.1sqlite31.3.10我创建了一个字段设置为文本的新模型:railsgmodel用户名:stringexample:text在我添加的User.rb文件中:serialize:example,Array我实例化了User类的一个新实例:test=User.new然后我保存用户以确保它正确保存:test.save()(0.1ms)begintransactionSQL(0.4ms)INSERTINTO"users"("cr