ruby-on-rails – 在Ruby中使用多级模块结构调用类方法
发布时间:2020-12-17 02:38:59 所属栏目:百科 来源:网络整理
导读:我有一些模块要包含在我的控制器类中.这些模块定义了before_filter: module BasicFeatures def filter_method ... end def self.included(base) base.before_filter(:filter_method) ... endendmodule AdvancedFeatures include BasicFeatures ...end 和班
我有一些模块要包含在我的控制器类中.这些模块定义了before_filter:
module BasicFeatures def filter_method ... end def self.included(base) base.before_filter(:filter_method) ... end end module AdvancedFeatures include BasicFeatures ... end 和班级: class BasicController < ApplicationController include BasicFeatures end class AdvancedController < ApplicationController include AdvancedFeatures end >当AdvancedFeatures模块包含在AdvancedFeatures模块中时,其中没有before_filter方法. 我需要两个控制器来获取before_filter而不需要任何代码重复.我不知道我是否使用最好的方法,所以我愿意接受任何建议. 解决方法
这就是创建ActiveSupport :: Concern的原因.
module BasicFeatures extend ActiveSupport::Concern included do before_filter :require_user end def this_is_an_instance_method 'foo' end module ClassMethods def this_is_a_class_method 'bar' end end end class SomeClass include BasicFeatures end SomeClass.new.this_is_an_instance_method #=> 'foo' 您也可以嵌套它们 – 也就是说,创建包含关注点的关注点 – 并且一切都将按预期工作.和here are the docs. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |