Ruby:循环遍历模型以计算嵌套哈希值中的比率

时间:2016-01-19 13:04:11

标签: ruby-on-rails ruby activerecord hash nested

我正在为一个工作应用构建一个垃圾邮件过滤器(想想工作的火种)。我目前正在帮助构建垃圾邮件过滤器。为实现这一目标,“过度申请”工作的用户的信号是他们每天的申请拒绝率。

为了告知我们的阈值,我想出了一个解决方案,通过使用嵌套哈希即{user1 =>{date1=>0.33, date2=>0.66}}从数据库中收集数据。我现在的问题是比率都是1.0,因为我认为我正在循环,直到拒绝或应用程序全部通过,因此计算总是相同的数字除以它自己。

这是我到目前为止所得到的。感谢帮助。

users = User.all
ratio_hash = Hash.new

users.each do |user|

  if user.job_applications.count > 0 && user.job_rejections.count > 0

    ratio_hash[user.name] = Hash.new

    apply_array = []
    reject_array = []

    user.job_rejections.each do |reject|
      user.job_applications.each do |apply|


        if (apply.user_id.present? && reject.user_id.present?) || rej.user_id.present?
          if (apply.user_id == user.id && reject.user_id == user.id) || rej.user_id == user.id
            if (apply.created_at.present? && reject.created_at.present?) || reject.created_at.present?

              date = (apply_array && reject.created_at.to_date)

              if (apply.created_at.to_date == reject.created_at.to_date) || reject.created_at.to_date == date
                apply_array << apply.created_at.to_date
                reject_array << reject.created_at.to_date
                ratio_hash[user.name][(apply.created_at.to_date || reject.created_at.to_date)] = (apply_array.length.round(2)/reject_array.length)
              end

            end
          end
        end

      end
    end

  end

0 个答案:

没有答案