Class: AccountSerializer
- Inherits:
-
AbstractSerializer
- Object
- AbstractSerializer
- AccountSerializer
- Defined in:
- app/serializers/account_serializer.rb
Class Method Summary collapse
-
.abilities(account) ⇒ Object
список возможностей с учётом запретов.
- .active(account) ⇒ Object
- .available_attributes ⇒ Object
- .created_at(account) ⇒ Object
- .id(account) ⇒ Object
- .props(account) ⇒ Object
- .type_index(account) ⇒ Object
Methods inherited from AbstractSerializer
Class Method Details
.abilities(account) ⇒ Object
список возможностей с учётом запретов
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'app/serializers/account_serializer.rb', line 44 def abilities(account) account_class = ::Dictionaries::AccountType::CLASS_BY_TYPE[account.type_id] default_abilities = ::Dicts::Accounts::Ability.all_for_account_class(account_class) prohibited = account.user. # отнимаем запрещённые действия из дефолтных not_prohibited = ->(ability) { prohibited.none? { |a| a.action.to_s == ability.index.to_s } } abilities = default_abilities.map do |a| { action: a.index, can: not_prohibited[a] } end { abilities: abilities } end |
.active(account) ⇒ Object
14 15 16 |
# File 'app/serializers/account_serializer.rb', line 14 def active(account) { active: account.active } end |
.available_attributes ⇒ Object
3 4 5 6 7 8 9 10 11 12 |
# File 'app/serializers/account_serializer.rb', line 3 def available_attributes %i[ active created_at id type_index props abilities ] end |
.created_at(account) ⇒ Object
18 19 20 |
# File 'app/serializers/account_serializer.rb', line 18 def created_at(account) { created_at: account.created_at } end |
.id(account) ⇒ Object
22 23 24 |
# File 'app/serializers/account_serializer.rb', line 22 def id(account) { id: account.id } end |
.props(account) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/serializers/account_serializer.rb', line 30 def props(account) props = case account.type_id when ::Dicts::AccountType::MANAGER_GUEST.id mg = account.manager_guest { radius: mg.radius.to_i } else {} end { props: props } end |
.type_index(account) ⇒ Object
26 27 28 |
# File 'app/serializers/account_serializer.rb', line 26 def type_index(account) { type_index: ::Dicts::AccountType.find(account.type_id).index } end |