检查一个表中的值是否存在于另一个表中

时间:2015-03-19 22:27:51

标签: ruby-on-rails

所以这可能很容易,但我找不到合适的方法。我有2个型号。一个叫做监视器,一个叫做跟随者。

在'monitor'中,我有一个名为owner_id的列。

在'追随者'中,我有一个名为follower_id的列。

我想做的是检查这些是否匹配(我想得到一个计数,而不是一个布尔输出)。两者都是belongs_to用户。

我该怎么做?

场合

我正在尝试从Twitter计算转化率。跟随者和关注者ID是关注您帐户的用户。

在监视器上,我让您监视关键字和交互,我保存owner_id(您正在与之通信的人)。

现在我算上你所有的谈话。然后我想看看有多少人转而关注你的公司。

我有一个名为广告系列的模型,您可以监控某些关键字。

<% @campaigns.each do |campaign| %>
  <%= campaign.keyword %>
<% end %>

该模型如下所示:

class Campaign < ActiveRecord::Base
 has_many :alerts
end

现在我要做的是跟踪特定广告系列的转化率。

 ( CODE HERE*  / campaign.alerts.count ) * 100 

其中CODE *应该是以下之间存在的数量的计数:

campaign.alerts.map(&:owner_id)  

current_user.followers.map(&:follower_id)

1 个答案:

答案 0 :(得分:0)

所以你要做的只是比较两个大的id数组(campagin.alerts.map(&:owner_id)current_user.followers.map(&:follower_id))并计算有多少id是相同的,你可以使用count来计算你的所有内容块表达式的计算结果为true,并将其保存在您将在除法中使用的变量上,如下所示:

result = (campagin.alerts.map(&:owner_id).count do |id| current_user.followers.map(&:follower_id)).include?(id) end

( result  / campaign.alerts.count ) * 100

还有许多其他方法,比如使用Array#all或其他方法,也许你可以在这里查看它们,看看最适合你的方法: http://ruby-doc.org/core-2.2.0/Array.html#method-i-2D