Как собрать и сравнить идентификаторы? - PullRequest
0 голосов
/ 15 июля 2011

У меня есть 2 мультиселектора в extJS (группы респондентов и только респонденты).У каждого респондента есть группа (ТОЛЬКО 1).

здесь, как я выбрал свои идентификаторы ...

Я получаю идентификатор респондента, например, = 1

  respondent_ids       = params[:selected_respondents].split(/,/).collect {|r| r.to_i}

здесь я получаю идентификаторы респондентов: 3,4,1

  respondent_pure_ids  = params[:selected_alone_respondents].split(/,/).collect {|r| r.to_i}

здесь я нахожу респондентов в группе (например, у меня 10 групп, в каждой группе 1-3 респондента).

  respondents       = Respondent.find(:all, :conditions => ["respondent_group_id in (?) AND id NOT IN (?)", respondent_ids, session[:user].id]) 

Я нахожу респондентов.

  respondents_alone = Respondent.find(:all, :conditions => ["id in (?) AND id NOT IN (?)", respondent_pure_ids, session[:user].id]) 

здесь я нашел респондентов (я нахожу идентификатор, где респондент_группа =?) И отправил им электронное письмо.

        respondents.each do |r|
            Notifier.deliver_inquiry_notification() 
        end

Что я хочу?Я получаю respondents и respondents_alone идентификаторы.

For example respondents = 3 , 4 , 6
respondents_ alone = 3, 5, 6, 8

У меня есть 3 и 6 идентификаторов в обоих.Я не хочу дублировать мои данные.Как проверить: если идентификаторы респондентов НЕ равны идентификаторам респондентов, я отправляю сообщение по электронной почте, иначе ошибка!

1 Ответ

2 голосов
/ 15 июля 2011

Вы можете использовать арифметику ruby-массивов, чтобы получить разницу между обоими массивами или получить каждую запись только один раз:

a = [3, 4, 6]
b = [3, 5, 6, 8]
a - b # [4] (only a without any element of b, difference)
b - a # [5, 8] (only b without any element of a, difference)
a | b # [3, 4, 6, 5, 8] (complete set of all ids, union)
a & b # [3, 6] (ids same in both arrays, intersection)

С помощью этого вы можете проверить, есть ли некоторые идентификаторы только в одном массиве или в обоих,например, разница пуста или a|b==a&b => оба равны

ср.http://www.ruby -doc.org / ядро ​​/ классов / Array.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...