Архив метки: ruby on rails

Ruby on Rails: HashWithIndifferentAccess

Занятная штука в Ruby on Rails 3, которую долго раскапывал по неопытности. Когда мы в контроллере получаем params, это не хэш, а HashWithIndifferentAccess, т.е. и params[:something], и params['something'] — это одно и то же.

А вот если мы объявляем некий хэш — скажем, такой:

my_hash = { :key1 => 'val1', :key2 => 'val2' }

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

Чтобы создать экземпляр HashWithIndifferentAccess, можно сделать так:

my_hash = {}.with_indifferent_access

Пишут об этом классе вполне откровенно на rubyonrails.org: «This class has dubious semantics».

На ту же тему: ruby on rails: merge! ‘params’ with a hash indifferently.

Ruby on Rails: преобразование даты и времени из формата Excel (float) в DateTime

Небольшое предисловие: в начале месяца я начал искать, на чем сделать один интересный и внезапно появившийся проект, и в итоге выбрал Ruby on Rails. О выборе, кстати, ни разу не пожалел (несмотря на то, что с Ruby вообще не был знаком и многие вещи оказались сильно непривычными). Думал о Drupal, но вовремя отказался. Кто-то правильно написал, что с ним большую часть времени надо fight the functionality you don't need. Конечно, был вариант делать все просто на PHP, но тогда я слишком долго делал бы довольно простые вещи — а в RoR они уже есть.

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

Вчера понадобилось конвертировать дату и время в DateTime при импорте из Excel (использую rubyXL) — а Excel хранит дату/время (сюрприз!) в float. Делаем это так:

def excel_to_datetime(excel_float)
  return DateTime.new(1899, 12, 30) + excel_float
end