Rails应用程序有500个型号

时间:2009-10-09 07:42:10

标签: ruby-on-rails

我有一个Rails应用程序,其中我有数百个只有CRUD操作的模型。我可以使用脚手架/活动脚手架但最后我的应用程序目录中有这么多文件。

是否可以执行类似通用模型,视图和控制器来处理这些内容,而不是在应用程序文件夹中使用500个。

3 个答案:

答案 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