所以这可能很容易,但我找不到合适的方法。我有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)
答案 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