这是一个很棒的想法,关于rails:
http://37signals.com/svn/posts/3372-put-chubby-models-on-a-diet-with-concerns
制作不是公共API一部分的非常小的方法也是一个好主意.在不用担心的情况下,这些成为ruby类中的私有方法.
在Rails ActiveSupport :: Concern模块中创建私有方法是否有意义?如果是这样,私人工作在常规实例方法和类方法的关注定义中?
解决方法
Does it makes sense to create private methods inside of a Rails
ActiveSupport::Concern
module?
考虑到这些关注是最终将被包含在其他类中的智能模块 – 是的,它是.它只是一个可移植的代码,可提取的行为,我想将其视为我的控制器(或模型等)的一部分,因为我正在编写它.所以基本上你只是按照通常的方式声明私有或受保护的方法.
也许the post you linked自2013年以来已经更新,但DHH在其中的一个例子中确实如此:
module DropBoxed extend ActiveSupport::Concern included do before_create :generate_dropBox_key end def rekey_dropBox generate_dropBox_key save! end private # <- Let's list some privates def generate_dropBox_key self.dropBox_key = SignalId::Token.unique(24) do |key| self.class.find_by_dropBox_key(key) end end end
对于私有类方法,我同意@Hugo,从不自己使用它们,但是你可以这样实现:
module DropBoxed extend ActiveSupport::Concern included do private_class_method :method_name end module ClassMethods def method_name end end end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。