С архитектурной точки зрения, должны ли модели в приложении rails устанавливать собственные ассоциации пользователей в функции after_initialize? - PullRequest
1 голос
/ 21 октября 2011

Предположим следующую структуру:

class Question < ActiveRecord::Base
  after_initialize :set_defaults

  belongs_to :user

  ...

  private
    def :set_defaults
      self.user = SomeAuth.current_user
    end
end

class User < ActiveRecord::Base
  has_many :questions

  ...
end

Далее, давайте предположим, что SomeAuth является некоторой магической схемой аутентификации черного ящика. Мы можем думать об этом как Разработать или Authlogic (или вставить ваше любимое решение для аутентификации в ruby).

Согласно этим предположениям, является ли анти-паттерн, чтобы Question устанавливал свой собственный атрибут user после инициализации (для всех намерений и целей, после вызова Question.new, то есть в макросе after_initialize)

1 Ответ

0 голосов
/ 23 октября 2011

Я бы не хотел классифицировать его как хороший или плохой шаблон в абсолютном выражении.

Если ваша система представляет собой только одно приложение RoR, то это похоже на хороший шаблон.Вы используете механизм, предоставляемый фреймворком, таким образом, не создавая дополнительный код и сохраняя его довольно простым.Ваш доменный объект привязан к вашей схеме аутентификации, но в этом простом контексте это может быть полезным.

Если ваша система представляет собой совокупность множества отдельных приложений, и вы хотите повторно использовать модель домена между ними, то вы можетехочу развестись со своим доменом и авторизоваться понятиями.Некоторые подсистемы могут не заботиться об аутентичности (например, пакетная обработка определенного вида).В этом контексте явная связь между доменом и аутентификацией (и тем, как он загружается) может быть анти-паттерном.

...