DHH 推到 master 分支的决定。和 2011 年 railsconf 一个 session DCI技术类似。但有很大不同是,更简单。DHH 用 8 年的 basecamp project 经验验证他的这个决定是对的。anyway,我们就快点学习吧。
https://37signals.com/svn/posts/3372-put-chubby-models-on-a-diet-with-concerns
Concern 最好用的是和 model 的业务逻辑垂直的时候,其实就相当于是简化了的 DCI, 没有 context 只是 data 和 interaction
scope 里面的方法不会污染别的 scope
class Trinity < ActiveRecord::Base
scope :as_father do
...
end
scope :as_son do
def bar
...
end
end
scope :as_spirit do
def foo
...
end
end
end
Trinity.as_spirit.foo
Trinity.as_son.bar
...
scope 的 where lambda 可省略,不过职责有时也和 where 有关系