Причина, по которой он не работает в irb, заключается в том, что sum
определено в ActiveSupport, а не в стандартной библиотеке ruby. Если вы сначала require 'active_support'
(или просто используете скрипт / консоль), он будет работать в irb.
Что делает roles=
, так это превращает массив ролей в битовую маску в соответствии с порядком ролей в массиве ROLES
(элемент), а затем сохраняет эту битовую маску как role_mask
. Например, ["admin", "author"]
будет преобразовано в 5 (что означает 0b101
в двоичном формате). Роли, не входящие в ROLES
, будут игнорироваться (например, ["admin", "bla"]
- это то же самое, что и ["admin"]
).
Что делает roles
, это превращает сохраненную битовую маску обратно в массив ролей.