model.create 是什么意思!在 Rails 控制器问题中使用时是什么意思?

What does model.create! mean when used in a Rails controller concern?

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

module StandardCreateAction
  extend ActiveSupport::Concern

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

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

在这种情况下,modelActiveSupport::Concern 无关,后者只是常见 ruby 习语的语法糖,例如:

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 将在包含模块或由模块扩展的 class 中解析为 self.model。如果 self.model 在那里无法解决,它会上升到 class 树。

我猜是这样的:

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

但是,在重新发明轮子之前,您可能想先看看 ActionController::Responder and the responders gem