model.create!
表达式意味着什么:
module StandardCreateAction
extend ActiveSupport::Concern
def create
model.create!(attributes)
render text: 'SUCCESS', status: self.class::SUCCESS_STATUS
end
end
我猜它在使用这个mixin的控制器中调用了同名模型?
答案 0 :(得分:1)
在这种情况下,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和responders gem。