LoginSignup
7
6

More than 3 years have passed since last update.

Modelで定義や関数などを書いていく最適な順番

Last updated at Posted at 2019-04-24

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 ガイドの記述を参考に作成しました(一部は自分で考えた箇所もあります)。上記の順番よりも、この順番の方がこんなメリットがあって良いよ!という情報がありましたらコメントをいただけるとうれしいです。

参考文献

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6