添加带有活动关注点的实例方法和在模块上添加普通的ruby def关键字有什么区别?
module MonsterConcern
extend ActiveSupport::Concern
included do
def engage_rage
end
def chew_bones
end
end
end
和
module MonsterConcern
def engage_rage
end
def chew_bones
end
end
据我所知,如果您唯一感兴趣的是实例方法,则没有区别。
ActiveSupport::Concern
的优点是能够定义类方法,并更好地处理一些令人讨厌的模块相关性(与在included
块中调用类方法有关)。
您可以在此处阅读更多信息:http://api.rubyonrails.org/classes/ActiveSupport/Concern.html