我有一个Rails应用程序,其中我有数百个只有CRUD操作的模型。我可以使用脚手架/活动脚手架但最后我的应用程序目录中有这么多文件。
是否可以执行类似通用模型,视图和控制器来处理这些内容,而不是在应用程序文件夹中使用500个。
答案 0 :(得分:7)
不确定
class GenericCrudController < ApplicationController
def index
current_model.find(:all)
end
private
def current_model
params[:model].constantize = Class.new(ActiveRecord::Base)
end
end
current_model
方法会动态创建ActiveRecord::Base
的后代。当然,这段代码非常基础。
更新:这会抱怨没有constantize=
方法。你可能不得不做这样的事情:Kernel.const_set(params[:model], Class.new(ActiveRecord::Base))
。
答案 1 :(得分:1)
我将以八月所说的为基础。还有一个错误。它应该是:
def current_model
params[:model].constantize
end
您可能希望过滤模型的内容,否则如果您有任何他们不应该访问的私有模型,它可能会变得混乱。
对于视图,您可以检查模型有多少列,并为它们准备相应的字段。
答案 2 :(得分:0)
另一个选择是使用一个插件,它可以创建丰富的CRUD接口。一个很好的例子是ActiveScaffold。创建界面非常简单:
class UsersController < ApplicationController
active_scaffold :user
end