On Jan 7, 2:33 ¨Âí¬ Ê夨ı¨Â ÇáâòéåÇá¤ÂáÏ <jgabrielyga... / gmail.com> wrote: > On Thu, Jan 7, 2010 at 10:20 AM, Jagadeesh <mnjagade... / gmail.com> wrote: > > hi Gurus, > > > Here my data structure > > > 1234 => { 'open' => '1234-1', > > 'analyzed' => '1234-2', > > 'feedback' => '1234-3', > > 'closed' => '1234-4' > > } > > 3455 => { 'open' => '3455-1', > > 'analyzed' => '34552', > > 'feedback' => '3455-3', > > 'closed' => '3455-4' > > } > > > My task is to display numbers [like 1234 or 3455] if they have ('open' > > OR 'analyzed') AND ('closed' OR 'feedback') eys. I tried following > > code > > > puts numbers if $DATA[pr].has_key?( ( ('closed' || 'feedback') > > 0 && ('open' || > > 'analyzed') ) ) > > > I am not sure what is wrong with it but its not testing these > > conditions and printing all numbers. Please help me understanding > > has_key method and writing correct condition. > > The has_key? method receives a single key to be checked in the hash. > In your snippet, what you are passing to the has_key? method is the > result of evaluating this: > > ( ('closed' || 'feedback') && ('open' || 'analyzed') ) > > which is: > > irb(main):002:0> ( ('closed' || 'feedback') && ('open' || 'analyzed') ) > => "open" > > So you are testing only for the "open" key. I don't know what $DATA or > pr or numbers are in your snippet, but you are testing only for the > key "open". > > Hope this helps, > > Jesus. $DATA=>{'1234' => { 'open' => '1234-1', 'analyzed' => '1234-2', 'feedback' => '1234-3', 'closed' => '1234-4' }, '3455' => { 'open' => '3455-1', 'analyzed' => '34552', 'feedback' => '3455-3', 'closed' => '3455-4' } } and am reading it in loop so pr will have 1234, 3455 etc. Thanks for your help. Thanks