2013-01-31 2 views
-1

두 인스턴스 값 : @a 및 @b가 있습니다. 해시와 비슷합니다 .... (의사 예제에서 설명 할 것입니다) 예를 들어 @ai의 경우 : @bi에서 Ruby에서 인스턴스 변수의 값을 다른 것으로부터 차감합니다.

*Field1 | Field2 | Field3* 

CONTITECH | CT942K1 | 123 
CONTITECH | CT722K1 | 123 
ATE | AB2123 | 123 

가 있습니다

CONTITECH | CT942K1 | 456 
BREMBO | TE132 | 123 

어떻게 @c = @a 것을 할 - @b는 @b에없는 유일한 값을 포함 할 것인가? 예를 들어

@c = @a - @b이 포함됩니다

CONTITECH | CT722K1 | 123 
ATE | AB2123 | 123 

을 그래서 단지 2 필드, 난 ... @b에서 @a 같은 값에서 동일 삭제해야하는 경우

예제를 통해 명확하게하지 않으면 주석으로 작성하십시오 .... 필자가 필요한 것은 @a의 모든 항목을 @b의 (field1 및 field2) 항목으로 모두 삭제하는 것입니다. 어떻게 수행합니까?

이 도움이 될 것입니다 경우 : 코드 : 이 @b입니다 (@articles) :

@articles = Article.find(:all, :conditions => ["ART_ID in (?) ", @search.map(&:ARL_ART_ID)]) 

및 @a (@non_original) : 내가 필요한

@non_original = [] 
    nr_condition = "*" + art_nr.to_s.gsub(/[^0-9A-Za-z]/, '').upcase + "*" 
    if art_nr.length > 3 
     art = search_not_oem(art_nr) 
     @search = CrossList.find(:all, :conditions => ['MATCH (cross_value) AGAINST (? IN BOOLEAN MODE)', nr_condition]) 
     if @search.present? 
     @prlist = PriceList.where("id IN (?)", @search.map(&:price_list_id)) 
     if @prlist.present? 
      @prlist.each do |p| 
      #@all_supp = Supplier.all 
      #if @all_supp.find{|item| item.SUP_BRAND.gsub(/[^0-9A-Za-z]/, '').include?(p.brand.gsub(/[^0-9A-Za-z]/, '').upcase)} && art.present? 
      # logger.warn("!!!!!! if") 
      #else 
       @non_original << p 
      #end     
      end 
     end 
     end 
    end 
@non_original 

는 @res이다 = @non_original - @articles, 그들은

+1

의사 코드 대신, @a와 @b를 설정하는 실제 루비 코드와 b의 결과를 알려주세요. –

+0

@ FrederickCheung 거기에 표시되는 내용은 무엇입니까? 모두 DB에 있습니까? 또한 코드가 크고 아무 것도 표시하지 않습니다. –

+0

@FrederickCheung은 –

답변

0

이 시도 ...하지만 동일한 데이터를 다른 필드가 있는지 :

field1field2과 일치하는 @articles에있는 모든 요소의 사람들을 제외하고, @non_original에서 @res 모든 객체에 투입한다

. @res의 개체는 @non_original과 동일한 유형, 즉 PriceList이됩니다.

+0

예, 괜찮아요 .... 그냥 편집 할 무언가가 필요합니다 ...하지만 처음에는 좋았습니다. –