andrewmarkle

Joined

10 Experience
0 Lessons Completed
0 Questions Solved

Activity

Posted in Organizing Rails Model Files Discussion

You can configure Rubocop to enforce an order on your models if you wish using the Layout/ClassStructure rule. https://docs.rubocop.org/rubocop/1.69/cops_layout.html#layoutclassstructure

You can play around with this but something like this:

Layout/ClassStructure:
  Enabled: true
  AutoCorrect: false
  Categories:
    module_inclusion:
      - include
      - prepend
      - extend
    attributes:
      - attribute
      - attr_reader
      - attr_writer
      - attr_accessor
      - alias_attribute
      - delegate
      - enum
    associations:
      - belongs_to
      - has_one
      - has_many
      - has_and_belongs_to_many
    validations:
      - validates
      - validate
      - validates_with
    callbacks:
      - before_validation
      - before_save
      - before_create
      - before_destroy
      - after_initialize
      - after_create
      - after_save
      - after_destroy
      - after_commit
      - after_create_commit
      - after_update_commit
      - after_destroy_commit
      - around_create
    other_macros:
      - acts_as_paranoid
      - audited
      - devise
      - has_paper_trail
      - serialize
    scopes:
      - default_scope
      - scope
    controller_actions:
      - before_action
      - skip_before_action
    controller_rescue:
      - rescue_from
  ExpectedOrder:
    - module_inclusion
    - constants
    - attributes
    - enums
    - associations
    - validations
    - callbacks
    - other_macros
    - scopes
    - controller_macros
    - controller_actions
    - controller_action_caching
    - controller_rescue
    - class_methods
    - initializer
    - public_methods
    - protected_methods
    - private_methods