如何收集和比较ID?

时间:2011-07-15 10:52:11

标签: ruby-on-rails

我在extJS中有2个多选择者(受访者组和jsut受访者)。 Erery受访者有一组(仅1人)。

在这里,我如何选择我的ID ...

我得到respondent_group id,例如= 1

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

这里我得到的受访者ID: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]) 

在这里,我找到了受访者(我发现id在哪里,respondent_group =?)并向他们发送电子邮件。

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

我想要什么? 我得到了respondentsrespondents_alone个ID。

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

我两个都有3个和6个ID。我不想公开我的数据。如何检查:如果受访者ID不等于respondent_alone ID我发送EMAIL其他错误!

1 个答案:

答案 0 :(得分:2)

您可以使用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)

使用此功能,您可以检查某些ID是仅在一个阵列中还是在两个阵列中,例如差异为空或a|b==a&b =>两者都是平等的

比照http://www.ruby-doc.org/core/classes/Array.html