我有一个名为Vendor
的模型。我有三种不同的模型。
我必须查找每个表并列出供应商(限制5),这些供应商在其中一个模型的列中具有“example”一词的最多次。我如何在rails中执行此操作?
我有类似的东西
Vendor.joins(:testimonials).where("testimonials.content LIKE ?","%example%")
我需要找到具有“example”
这个词的最大出现次数的供应商答案 0 :(得分:1)
我希望我现在能帮到你:
a=[]
vendors.each do |v|
c=0
c=v.testimonial.scan(/example/).count
if c>0
a=a.concat([{vendor: v, counts: c}])
end
答案 1 :(得分:0)
在Ruby中,您可以通过这种方式计算字符串中子字符串的出现次数,例如
s = "this is a string with an example, example, example"
s.scan(/example/).count # => 3
答案 2 :(得分:0)
这就是我最终做到这一点的方式。不确定我的问题是否被正确询问。我是在@ user3383458
之前的回答的帮助下完成的vendor = Hash.new
Vendor.all.each do |v|
testi_word_count = 0
service_word_count = 0
title_word_count = 0
v.testimonials.each do |testi|
testi_word_count += testi.content.scan(/#{word_to_search}/).count
Rails.logger.info "testi_word_count"
Rails.logger.info testi_word_count
end
v.services.each do |service|
service_word_count += service.name.scan(/#{word_to_search}/).count
Rails.logger.info "service_word_count"
Rails.logger.info service_word_count
end
v.works.each do |work|
title_word_count += work.title.scan(/#{word_to_search}/).count
Rails.logger.info "title_word_count"
Rails.logger.info title_word_count
end
vendor[v]=testi_word_count + service_word_count + title_word_count
end