ruby / rails - учитывая два хэша, как обмениваться предметами? - PullRequest
0 голосов
/ 06 марта 2011

У меня есть следующие хэши:

@valids
[
  {
    :lname => "Brown",
    :email => "james@intuit.com",
    :fname => "James"
  },
  {
    :lname => "Smith",
    :email => "brad@intuit.com",
    :fname => "Brad"
  }
]


@invalids
[
  {
    :lname => nil,
    :email => "brad@intuit.com",
    :fname => nil
  },

  {
    :lname => nil,
    :email => "roger@gmail.com",
    :fname => nil
  }
]

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

Например, при циклическом просмотре @invalids, если email = roger@gmail.com, я хочу взять:

  {
    :lname => nil,
    :email => "roger@gmail.com",
    :fname => nil
  }

и переместить его в @validsи удалите его из @ инвалидов.

Есть ли способ сделать это без создания новых хэшей?Спасибо

1 Ответ

2 голосов
/ 07 марта 2011

Это должно сделать это:

@invalids = @invalids.reject do |record|
  if record[:email] == "roger@gmail.com"
    @valids.push(record)
  end
end

Чтобы объяснить это немного, я устанавливаю @invalids как результат запуска @ invalidids.reject и пропускаю его блок, поэтому он будет отклонять любыеЭлемент массива, который соответствует критериям (возвращает что-то верное).

Внутри условного я добавляю в массив @valids

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