#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. Вот почему существуют опасения .