我有一堆资源都具有相同的路径,称为synced_index
。不同资源中路由的唯一区别是它具有不同的模型名称。例如:
# Page controller
def synced_index
render :json => Page.my_func
end
# Comment controller
def synced_index
render :json => Comment.my_func
end
这是一个简化的示例,但我基本上想将其抽象为要继承的模块或Controller类。所以我可以简单地说:
include SyncableResource
在我的控制器类中。我的问题是确定资源名称。什么是最好/最可靠的方法?现在我有:
self.class.to_s.delete('Controller').singularize.constantize
虽然对我来说感觉有点笨拙。
答案 0 :(得分:3)
这应该做的工作:
controller_name.classify
根据需要,您可以在其后添加.constantize
答案 1 :(得分:0)
这取决于您的应用程序的复杂程度以及您使用的类/命名空间。您可以查看与https://github.com/josevalim/inherited_resources/blob/master/lib/inherited_resources/class_methods.rb#L312
类似的内容inherited_resources