What is the correct order of associations, scopes, validations, etc. in Rails models
There is no such convention. But you can create one for your project and be consistent with it in all the models. This is what i follow.
class Model < ActiveRecord::Base
#all mixins
include Something
extend Something
#other stuff
acts_as_taggable
paginates
#associations
has_many :something
belongs_to :something_else
#validations
validate_presence_of :something
#scopes
scope :something
#instance methods
def instance_method
end
#class methods
def self.method
end
#private methods
private
def method2
end
end
Rubocop has it https://github.com/rubocop-hq/rails-style-guide#macro-style-methods
class User < ActiveRecord::Base
# keep the default scope first (if any)
default_scope { where(active: true) }
# constants come up next
COLORS = %w(red green blue)
# afterwards we put attr related macros
attr_accessor :formatted_date_of_birth
attr_accessible :login, :first_name, :last_name, :email, :password
# Rails 4+ enums after attr macros
enum gender: { female: 0, male: 1 }
# followed by association macros
belongs_to :country
has_many :authentications, dependent: :destroy
# and validation macros
validates :email, presence: true
validates :username, presence: true
validates :username, uniqueness: { case_sensitive: false }
validates :username, format: { with: /\A[A-Za-z][A-Za-z0-9._-]{2,19}\z/ }
validates :password, format: { with: /\A\S{8,128}\z/, allow_nil: true }
# next we have callbacks
before_save :cook
before_save :update_username_lower
# other macros (like devise's) should be placed after the callbacks
...
end