Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 RoR MongoID查找不';不行?_Ruby On Rails_Ruby_Mongodb_Mongoid - Fatal编程技术网

Ruby on rails RoR MongoID查找不';不行?

Ruby on rails RoR MongoID查找不';不行?,ruby-on-rails,ruby,mongodb,mongoid,Ruby On Rails,Ruby,Mongodb,Mongoid,我是MongoID(&mongoDB)的新手,由于从引用集合中提取数据而导致性能问题 class Accounting::Invoice include Mongoid::Document belongs_to :contact, :class_name => 'Contact' End class Contact include Mongoid::Document field :name, type: String end 还使用gem'kaminarim

我是MongoID(&mongoDB)的新手,由于从引用集合中提取数据而导致性能问题

class Accounting::Invoice
  include Mongoid::Document

  belongs_to :contact, :class_name => 'Contact'
End

 class Contact
   include Mongoid::Document

   field :name, type: String
 end
还使用gem'kaminarimongoid'进行分页

我的查询的简化版本是:

@invoices = Accounting::Invoice.all.page(params[:page].to_i)

<% @invoices.each do |inv| %>
   <% inv.contact.name %>
<% end %>
@invoices=Accounting::Invoice.all.page(参数[:page].to_i)
问题是,当我显示数据时,为了简单地从Contact collection获取名称,我必须重新连接到DB并提取每个列表的名称。我尝试使用$lookup,但是当我使用kaminari进行分页时,它不起作用

关于如何在不需要重新连接数据库的情况下获取联系人姓名,有什么建议吗


谢谢你所经历的一切。通过对关联使用,可以将查询数减少到2。就你而言:

Accounting::Invoice.includes(:contact)
                   .page(params[:page].to_i)
我们应该做到这一点

当它返回
ActiveRecord::Relation
对象时,您可以链接应用于AREL的其他作用域和方法。因此,如果您只想将
与此一起使用
,请按以下步骤操作:

Accounting::Invoice.includes(:contact)
                   .only(<list_of_attributes>)
                   .page(params[:page].to_i)
会计::发票。包括(:联系人)
.仅()
.page(参数[:page].to_i)

重新连接到DB是什么意思?基本上,对于每个inv.contact.name,它都会连接回服务器以从contact获取名称。因此,如果我有50张发票要显示,我的Im总共会发出51个查询。1原始数据,发票清单。每个联系人50美元。姓名尝试
Accounting::Invoice.includes(:Contact)。page(params[:page]。to_i)
!是否有一种方法可以“仅”与引用的集合集成?