Элегантный способ проверить, если список полей не пуст - PullRequest
0 голосов
/ 17 июля 2011

Мне нужно проверить список полей модели, например:

[:first_name, :last_name, :city]

, если все эти поля заполнены.

Уродливый код может выглядеть так:

# user.rb
def update_profile_completed
    helper = true 
    field_list.each {|field| helper = false if self[field].blank?}
    self.update_attributes(:profile_completed => true) if helper
end

Надеюсь, этот код является хорошей иллюстрацией моей проблемы.

Ответы [ 2 ]

5 голосов
/ 17 июля 2011
def update_profile_completed
  self.update_attributes(:profile_completed => true) unless [:first_name, :last_name, :city].any?{|f| self[:f].blank? }
end
0 голосов
/ 02 ноября 2015

Я использовал предыдущий ответ для пользовательской проверки, а затем обнаружил, что он не работает на нуле.Я переключился на

[:first_name, :last_name, :city].any?{|f| !self[f].present? }

, потому что он будет работать на пустом или нулевом.Обратите внимание !потому что вы сейчас спрашиваете это «нет» против «это пустое»?

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