Modelにbelong_toやvalidatesなどを書いていく順番を規則性を持たせて書いた方が良いという話を聞きました。たしかに、規則性を持たせて書いた方が統一感が出てプログラムも読みやすくなるのではないかと思いました。
何を参考に順番を決めていくのかはRuby on Rails ガイドが参考になるということでRuby on Rails ガイドに記載されているプログラムを見ながら最適であろう順番をまとめてみました。
class Hoge < ApplicationRecord
include Hoge::Hoge
# アソシエーション系を書く
belongs_to :hoge
has_one :hoge
has_many :hoge
# rails guidesに記載されていなかったが、ここでgemなどの関数を呼び出しや他の定義を書く
has_secure_password
# AttributeMethodsモジュールを書く
attribute_method_prefix 'hoge_'
attribute_method_suffix '_hoge?'
define_attribute_methods 'hoge'
# attr_系を書く
attr_accessor :hoge
# バリデーション系を書く
validates :hoge, presence: true
# before_○○などのコールバック系を書く
before_validation :hoge
after_validation :hoge
# rails guidesに順番は記載されていなかったがクラスメソッドに近いのでこの辺りが妥当と考えられる
scope :hoge, -> { hoge(hoge: true) }
def self.hoge
end
def hoge
end
private
def hoge
end
end
最後に
上記の順番はRuby on Rails ガイドの記述を参考に作成しました(一部は自分で考えた箇所もあります)。上記の順番よりも、この順番の方がこんなメリットがあって良いよ!という情報がありましたらコメントをいただけるとうれしいです。