1

表达式是什么model.create!意思:

module StandardCreateAction
  extend ActiveSupport::Concern

  def create
   model.create!(attributes)
   render text: 'SUCCESS', status: self.class::SUCCESS_STATUS
  end
end

我猜它在使用这个mixin的控制器中调用了同名模型?

4

1 回答 1

1

在这种情况下,这与常见的 ruby​​ 习语周围的语法糖model无关,ActiveSupport::Concern例如:

module SomeMixin
  def self.included(base)
    base.extend ClassMethods
    base.class_eval do
      def foo
      end
    end
  end

  module ClassMethods
    def bar
    end
  end
end

在这种特定情况下model,将解析为self.model包含模块或由模块扩展的类。如果self.model不能在那里解决,它会上升到类树。

我猜它是这样的:

def model
  self.class_name.chomp("Controller").singularize.constantize
end

但是,在重新发明轮子之前,您可能需要查看ActionController::Responder响应者 gem 。

于 2016-02-23T23:50:05.150 回答