Ruby: работа с массивами - PullRequest
0 голосов
/ 09 августа 2011

Я работаю над сценарием, который собирает все комментарии из моей БД и вставляет их в хеш.Затем я собираю хэш комментариев и разделяю комментарии на два отдельных хеша комментариев (vid_comments & wall_comments)

w_hash["comments"] << contender.profile.comments.where("created_at > DATE_SUB( NOW(), INTERVAL 1 DAY)")
    w_hash["comments"].delete_if { |x| x.blank? }
    w_hash["vid_comments"], w_hash["wall_comments"] = [], []

    w_hash["comments"].each do |c|
      if !c.media_id.nil?
        w_hash["vid_comments"] << c
      elsif c.parent_id == 0
        w_hash["wall_comments"] << c
      end
    end

Есть ли способ сократить код?Я довольно новичок в Ruby (импорт PHP), поэтому извините за незнание того, что я могу делать неправильно.

РЕДАКТИРОВАТЬ: Добавлено в бит кода из @Mchl (ниже) ..

1 Ответ

1 голос
/ 09 августа 2011

Один из способов, которым я сам являюсь (недавно импортировал PHP), состоит в том, чтобы изменить это:

w_hash["vid_comments"] = w_hash["comments"].collect { |c| !c.media_id.nil? }
w_hash["wall_comments"] = w_hash["comments"].collect { |w| w.parent_id == 0 }

В

w_hash["comments"].each do |c|
  if !c.media_id.nil?
    w_hash["vid_comments"] << c
  elsif c.parent_id == 0
    w_hash["wall_comments"] << c
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...