Но вы ведь поняли что
region = params[:state].presence || params[:country].presence || 'US'
отличается от
region = params[:state] || params[:country] || 'US'
Потому что во втором случае params[:x] может быть только nil или false, а в первом может быть и пустым объектом.
Если бы вы писали на чем нибудь другом, а не на Ruby, то не отличалось бы! Смотря конечно что вы ожидали бы получить.
В Ruby все объект, как мы знаем. Пустая строка(массив, хэш) такой же объект как и не пустая поэтому и та и другая преобразовываются в true, во многих других языках не так.
Поэтому нам порой приходится проверять объекты на их «пустоту». Метод blank?
А вот и нет. Допустим у вас была какая то запись в базе. Пришли данные из формы в которых поле лого было пустым. Вы сделали @theme.logo = params[:theme][:logo].presence И получилось что у вас затерлось поле лого в базе, которое по идее обновляться не должно было.
Спасибо автору за столь подробное описание.
Но вот у меня, например, немного предвзятое отношение к unfuddle, во — первых, он мне очень напоминает Redmine,
во-вторых, он показался мне медленным.
А также вопрос: могу ли я на план Micro или Compact подключить функциональность тайм-трекинга?
[] — пустой массив
{} — пустой хэш
[].presence #=> nil
{}.presence #=> nil
false.presence #=> nil
''.presence #=> nil
Но вы ведь поняли что
region = params[:state].presence || params[:country].presence || 'US'
отличается от
region = params[:state] || params[:country] || 'US'
Потому что во втором случае params[:x] может быть только nil или false, а в первом может быть и пустым объектом.
В Ruby все объект, как мы знаем. Пустая строка(массив, хэш) такой же объект как и не пустая поэтому и та и другая преобразовываются в true, во многих других языках не так.
Поэтому нам порой приходится проверять объекты на их «пустоту». Метод blank?
present? = !blank?
Но вот у меня, например, немного предвзятое отношение к unfuddle, во — первых, он мне очень напоминает Redmine,
во-вторых, он показался мне медленным.
А также вопрос: могу ли я на план Micro или Compact подключить функциональность тайм-трекинга?
пока только вижу смысл купить охлаждение, чтоб хоть как то облегчить участь моего бука.
p.s. я под убунтой пользуюсь простой штуковиной
при вводе получаем