Как определить глобальный метод уровня приложения, который будет использоваться где-нибудь в Rails? - PullRequest
2 голосов
/ 11 октября 2019

У меня есть метод current_org, который определяется просто как:

def current_org
  Organization.find_by(subdomain: Apartment::Tenant.current)
end

Он всегда один и тот же, независимо от того, является ли он представлением, контроллером, моделью или даже службой. Поскольку текущий арендатор получен из соединения с базой данных, мне не нужно беспокоиться о том, что он правильно определен. И я использую его везде.

Какой лучший способ определить глобальный метод в Rails, чтобы я мог просто вызывать current_org из любого места? В настоящее время моим лучшим решением является определение модуля в /lib и вызов его с помощью CustomHelperMethods.current_org. Но я ищу что-то немного чище.

1 Ответ

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

Я бы поставил его как метод класса в модели Organiation или создал бы специальный сервис / класс, который его выбирает.

class Organization < ApplicationRecord
  def self.current_org
    find_by(subdomain: Apartment::Tenant.current)
  end 
end

или

# e.g. in app/services/
class CurrentOrganization
  def self.current_org
    Organization.find_by(subdomain: Apartment::Tenant.current)
  end 
end
...