Created
June 8, 2011 18:09
-
-
Save dhh/1014971 to your computer and use it in GitHub Desktop.
Use concerns to keep your models manageable
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# autoload concerns | |
module YourApp | |
class Application < Rails::Application | |
config.autoload_paths += %W( | |
#{config.root}/app/controllers/concerns | |
#{config.root}/app/models/concerns | |
) | |
end | |
end | |
# app/models/concerns/trashable.rb | |
module Trashable | |
extend ActiveSupport::Concern | |
included do | |
default_scope where(trashed: false) | |
scope :trashed, where(trashed: true) | |
end | |
def trash | |
update_attribute :trashed, true | |
end | |
end | |
# app/models/message.rb | |
class Message < ActiveRecord::Base | |
include Trashable, Subscribable, Commentable, Eventable | |
end |
@IZBOR besides the fact that this discussion has nothing to do with DCI, DCI is slow and is not really spreading a ton because of that.
Great article from codeclimate on making fat model thin http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
DCI sample
https://gist.github.com/izbor/4ae08b0b57e9a810a852