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

时间:2016-02-23 23:26:41

标签: ruby-on-rails ruby mixins activesupport activesupport-concern

model.create!表达式意味着什么:

module StandardCreateAction
  extend ActiveSupport::Concern

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

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

1 个答案:

答案 0 :(得分:1)

在这种情况下,modelActiveSupport::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::Responderresponders gem