Skip to main content

concerns_namespacing

📁 Organizing Concerns with Namespaces

Keep controllers and models clean by grouping related modules inside a Concerns namespace. This avoids name collisions and improves discoverability.

# app/models/concerns/archivable.rb
module Concerns
module Archivable
extend ActiveSupport::Concern

included do
scope :archived, -> { where(archived: true) }
end

def archive!
update!(archived: true)
end
end
end

class Post < ApplicationRecord
include Concerns::Archivable
end

Post.archived # => ActiveRecord::Relation

Use a top-level Concerns namespace in app/*/concerns for consistency.