我想知道用这种方法检查什么,然后我将根据这个进行测试。
partner.rb
def get_record_count
self.administrator? ? ContactRecord.where("partner_id in ( SELECT id FROM partners WHERE company_id = ? )",self.company_id).size : self.contact_record.size
end
答案 0 :(得分:1)
如果that partner
是管理员,则会将company_id
与同事partners
进行匹配。然后它检索关联的ContactRecords
partner_id = fellow ids
,并返回此类记录总数的大小:匹配的联系人记录数。
如果它不是管理员,则会返回contact_record.size
ActiveRecord替换表示:
ContactRecord.where("partner_id in ( SELECT id FROM partners WHERE company_id = ?)", self.company_id).size
ContactRecord.where(:partner_id => Partner.where(:partner_id => self.company_id).pluck(:id)).size
答案 1 :(得分:0)
1
SELECT id FROM partners WHERE company_id = ?
此部分返回“partner”的id列表,其中company_id =当前Object(Model)的id。将此列表命名为PARTNERS_LIST
2
ContactRecord.where("partner_id in ( SELECT id FROM partners WHERE company_id = ? )",self.company_id)
此部分发现ContactRecords的“partner_id”属于PARTNERS_LIST。
3
self.administrator? ? ContactRecord.where("partner_id in ( SELECT id FROM partners WHERE company_id = ? )",self.company_id).size
最后,这将返回ContactRecords的计数,在第2阶段结束。