
到现在为止还挺好.问题是ActiveRecord#find(Array)似乎忽略了思想在数组中出现的顺序.因此,如果我键入document.find([1,2,3]),我得到的结果与document.find([3,1])相同.
那么我的问题是:我如何得到一个ActiveRecord结果数组,其顺序与我传递给#find的ID相同?或者,如果ActiveRecord不能直接实现这一点,那么如何在事后对生成的数组进行排序?
非常感谢人们可以贡献的任何答案!
解决方法 ActiveRecord是数据库的接口,它按照数据库返回的顺序将记录返回给您.如果您不提供“订单”参数,则返回的订单(有效)是随机的.如果您的订单是按ID升序或降序:
results = SomeModelname.find([1,3],:order => "ID") # ascending orderresults = SomeModelname.find([1,:order => "ID desc") # descending order
如果ID顺序不是升序或降序:
IDs = [1,3,2]r = SomeModelname.find(IDs)results = IDs.map{|ID| r.detect{|each| each.ID == ID}} 总结 以上是内存溢出为你收集整理的ruby-on-rails – Rails / ActiveRecord:使用ActiveRecord返回订单#find(Array)全部内容,希望文章能够帮你解决ruby-on-rails – Rails / ActiveRecord:使用ActiveRecord返回订单#find(Array)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)