首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有ActiveScaffold和锁定插件的Rails

带有ActiveScaffold和锁定插件的Rails
EN

Stack Overflow用户
提问于 2009-12-23 16:11:38
回答 1查看 333关注 0票数 0

我们的应用程序是使用Rails 2.3.5和ActiveScaffold一起开发的。通过在控制器中声明如下所示,ActiveScaffold在运行时增加了相当大的魔力:

代码语言:javascript
复制
class SomeController < ApplicationController
 active_scaffold :model
end

只要在控制器中添加一行,所有restful操作及其相应的视图就会由于ActiveScaffold的元编程而可用。由于大多数代码都是在运行时添加的,因此在开发模式下请求似乎要慢一点,因为没有class_caching。

我们需要添加一个授权层,我的团队已经选择了锁定插件,它解析了一个init.rb文件,您可以在其中声明所有授权规则。锁定存储授权规则的方式是解析init.rb文件并计算init.rb文件中声明的控制器。因此,对于每个请求锁定,评估所有控制器,从而迫使ActiveScaffold添加大量元编程,这反过来使db查询来查找每个模型的列定义。这在很大程度上减缓了开发中的请求,因为没有class_caching。有些时候要求的时间是30到45秒。

有没有办法强迫ActiveScaffold在before_filter中发挥它的魔力?如下所示:

代码语言:javascript
复制
class SomeController < ApplicationController
 before_filter :init_active_scaffold
 private
   def init_active_scaffold
     self.class_eval do
       active_scaffold :model
     end
   end
end

代码语言:javascript
复制
class SomeController < ApplicationController
 before_filter :init_active_scaffold
 private
   def init_active_scaffold
     self.instance_eval do
       active_scaffold :model
     end
   end
end

代码语言:javascript
复制
class SomeController < ApplicationController
 before_filter :init_active_scaffold
 private
   def init_active_scaffold
     self.class.class_eval do
       active_scaffold :model
     end
   end
end

代码语言:javascript
复制
class SomeController < ApplicationController
 before_filter :init_active_scaffold
 private
   def init_active_scaffold
     self.class.instance_eval do
       active_scaffold :model
     end
   end
end

我尝试了上述四个选项,当我提出请求时,浏览器似乎显示了加载指示符,但没有发生任何事情。

任何帮助都是非常感谢的。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2010-01-01 21:17:35

仅在开发模式下对init.rb进行锁定,这样您就可以在不重新启动应用程序的情况下进行更改。它会慢一些--这是一种方便的权衡。好消息是,锁定将只在生产模式下执行一次此解析。

我不使用ActiveScaffold,所以我不能在那里提供任何帮助,但我认为您会对此感兴趣。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1953705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档