2015-03-19 2 views
0

Так что это, вероятно, легко, но я не смог найти правильный метод для него. У меня 2 модели. Один называется монитором, а один называется последователем.Проверьте, есть ли значение в одной таблице в другом

В «мониторе» У меня есть столбец с именем owner_id.

В 'follower' У меня есть столбец под названием follower_id.

Что бы я хотел сделать, это проверить, соответствует ли какое-либо из этих файлов (я бы хотел получить счет, а не логический вывод). Оба принадлежат users.

Как мне это сделать?

Ситуация

Я пытаюсь вычислить коэффициент конверсии Twitter. Где следящие и следящие ids являются пользователями, которые следуют за вашей учетной записью.

На мониторе я позволяю вам отслеживать ключевые слова и взаимодействия, где я сохраняю owner_id (человека, с которым вы общаетесь).

Теперь я считаю все разговоры, которые у вас были. Затем я хочу посмотреть, сколько из тех, кто превратился в вашу компанию.

У меня есть модель под названием кампании, в которой вы можете отслеживать определенные ключевые слова.

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

модель выглядит следующим образом:

class Campaign < ActiveRecord::Base 
has_many :alerts 
end 

теперь, что я хочу сделать, это отслеживать коэффициент конверсии для конкретной кампании.

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

где КОД ЗДЕСЬ * должен быть подсчет, сколько, что существует между:

campaign.alerts.map(&:owner_id) 

и

current_user.followers.map(&:follower_id) 
+0

показать код или где вы пытаетесь его реализовать. – uday

+0

Я добавил пример, который помогает? – sja

+0

Вы можете сделать 'campaign.alerts.size', чтобы получить количество предупреждений для определенной кампании –

ответ

0

так, что вы пытаетесь сделать, это просто сравнить два больших массивы идентификаторов (campagin.alerts.map(&:owner_id) и current_user.followers.map(&:follower_id)) и подсчитайте, сколько идентификаторов одинаково, вы можете использовать count и подсчитывать все, что ваше выражение блока оценивается как true, и сохранять его на переменной th у вас будет использовать на своем дивизионе, что-то вроде этого:

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

(result/campaign.alerts.count) * 100 

Есть много других способов, как с помощью массива # все или другие методы, возможно, вы можете посмотреть их здесь и посмотреть, что вам подходит большинство: http://ruby-doc.org/core-2.2.0/Array.html#method-i-2D

Смежные вопросы