论坛首页 编程语言技术论坛

轻轻地改造activescafflod的crate 方法,加快输入数据的速度。

浏览 3035 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-27  
有些时候我们得输入一批有共同属性的记录,比如同一个品牌的商品。activescaffold每次新增数据,都会把表单清空,同样的属性我们必须重新输入或选择。为了dry,我轻轻地改了一下activescafflod的crate 方法。

首先,在配置中把“创建的表单是否应该是持久”的选项改为ture
active_scaffold :product do |conf|
      conf.create.persistent =true
  end

这样每次提交后,表单又会自己打开。

然后修改/vendor/plugins/active_scaffold/lib/action/create.rb文件62行do_new方法:
def do_new
      @record = active_scaffold_config.model.new
      #这段是我加进去,为了增加添加速度
      last_recor = active_scaffold_config.model.find(:first,:order=>'id desc')
      @record = last_recor.clone if last_recor
      #到这里结束
      apply_constraints_to_record(@record)
      @record
    end

搞掂,每次新增一个记录,到会复制对上一个记录的所有属性

最后,当然你也可以只复制需要重复的属性,而不是整个拷贝。

希望对大家的工作有帮助。
   发表时间:2008-04-27  
这样的效果的确能给用户更好的体验。

我这儿也分享一个有关ActiveScaffold创建的改进:批量创建
http://activescaffold.com.cn/blog/2008/04/02/activescaffold-ext-batch_create/
0 请登录后投票
   发表时间:2008-04-29  
我觉得create应该增加一种复制create,可以复制一条记录。
0 请登录后投票
   发表时间:2008-04-29  
carlosbdw 写道
我觉得create应该增加一种复制create,可以复制一条记录。

User.create(another_user.attributes)
0 请登录后投票
   发表时间:2008-05-19  
我记得可以直接用@user.clone,会自动去掉主键ID
0 请登录后投票
   发表时间:2008-05-19  
谢谢,去试试。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics