Разделение рельсов модели активных записей

#ruby-on-rails #activerecord #single-responsibility-principle

Вопрос:

Мне нравится идея сохранения моделей и создания новых классов или модулей для конкретной логики (в соответствии с принципом единой ответственности).

Из того, что я понимаю, ассоциации, области и проверки активных записей принадлежат модели активных записей в rails. Однако иногда только они могут привести к тому, что файл модели выйдет из большого размера. Будет ли разделение модели активной записи на подмодели с помощью class_eval теста на кодирование? См. Пример ниже:

 # app/models/user.rb
class User < ApplicationRecord
  include Associations
  include Validations
  include Scopes
end

# app/models/user/associations.rb
class User
  module Associations
   User.class_eval do
     # insert belongs_to, has_many, etc.
   end
  end
end

# app/models/user/scopes.rb
class User
  module Scopes
   User.class_eval do
     # insert scopes
   end
  end
end

# app/models/user/validations.rb
class User
  module Validations
   User.class_eval do
     # insert validations
   end
  end
end
 

Комментарии:

1. Я перенес ассоциации, методы и области действия в модули, чтобы сохранить SRP на них. Но я сохранил все это, связанное с одним и тем же, это функциональность социальных сетей; у лайков был бы свой собственный модуль и т. Д. Не уверен, что он проходит тест на запах, но это то, что я сделал в prod

2. Вот почему существуют опасения .