Как изменить уже выставленную постоянную модуля в ruby - PullRequest
1 голос
/ 06 октября 2019

В моем модуле определена константа, и она уже доступна всем клиентам и многим клиентам, использующим эту константу напрямую.

module MyModule
  module Contants
    FRUITS_MAP = [
      {
        id: 1,
        name: 'Apple'
      },
      {
        id: 2,
        name: 'Coconut'
      }
    ].freeze
  end
end

Теперь проблема в том, что я хочу добавить еще один хэш в FRUITS_MAP. на основе условия.

if Account.enabled_feature?('Mango')
      {
        id: 5,
        name: 'Mango'
      }

Примечание. У меня нет доступа ко всем клиентам, и я не хочу применять изменения ко всем клиентам, но хочу условно добавить еще один элемент в FRUITS_MAP.

Для клиента X с включенной функцией 'Mango' FRUITS_MAP должен содержать 3 элемента, а для клиента Y с отключенной функцией 'Mango' в FRUITS_MAP должно быть только 2 элемента. Как мне этого добиться?

1 Ответ

1 голос
/ 06 октября 2019

Вы можете просто вернуть новый массив путем объединения MyModule::Contants::FRUITS_MAP и дополнительного объекта, который вы хотите в нем, если условие истинно:

p MyModule::Contants::FRUITS_MAP + [{ id: 5, name: 'Mango' }] if Account.enabled_feature?('Mango')
# [{:id=>1, :name=>"Apple"}, {:id=>2, :name=>"Coconut"}, {:id=>5, :name=>"Mango"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...