rails了解sql代码来编写测试

时间:2013-05-16 15:28:03

标签: sql ruby-on-rails rspec

我想知道用这种方法检查什么,然后我将根据这个进行测试。

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

2 个答案:

答案 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阶段结束。