小编Aar*_*ian的帖子

如何确定是否刚刚在after_save中创建或更新了记录

#new_record?function确定是否已保存记录.但它总是假的after_save.有没有办法确定记录是新创建的记录还是更新的旧记录?

我希望不要使用另一个回调,比如before_create在模型中设置一个标志或者需要另一个查询到db.

任何建议表示赞赏.

编辑:需要在after_save挂钩中确定它,对于我的特定用例,没有updated_atupdated_on时间戳

activerecord ruby-on-rails activemodel

93
推荐指数
7
解决办法
5万
查看次数

哪个JavaScript库具有最全面的类继承支持?

在玩了十几种不同的JavaScript库(例如Prototype,jQuery,YUI)之后,我发现每个不同的库都有不同的方式来模拟某种类层次结构并提供某种类继承支持.(除了jQuery)除了非常恼火,当你创建一个新类时,它必须依赖于库,除非你采用普通的方法.

我想知道哪个库提供了对类继承的最佳支持以及原因.

我希望有一天,JavaScript库作者可以就类创建和继承的一种风格达成一致.

javascript javascript-framework

20
推荐指数
5
解决办法
9648
查看次数

你如何说服你的经理你的项目需要大量的重构?

我作为承包商加入了铁路项目.该项目已经持续了一年多.代码由大约10个不同的开发人员编写,其中大多数也是承包商.他们有不同的代码风格.其中一些来自Java.代码与metric_fu的分数很可怕.许多功能都很长(100 - 300行).某些函数具有大量的逻辑分支,循环和递归.每个请求都会生成大量的SQL查询.表现非常糟糕.许多过时的代码从未使用但从未有机会被清理.核心架构是完全错误的或过度设计的.代码覆盖率仅为25%左右.观点和部分是混乱的,阅读和理解可怕.

经理通过不断添加新功能来尝试满足CEO,但是新功能越来越难以正确实施而不会破坏其他功能.他知道代码很糟糕,但不想花太多精力修复它们,因为重构需要太长时间.

作为承包商/开发商,有什么方法可以清除这种情况并方便经理或首席执行官分配一些时间进行重构?

相关问题

我如何说服持怀疑态度的管理层和同事允许重构糟糕的代码?

如何重构预算

处理不合逻辑的经理人

ruby refactoring ruby-on-rails

6
推荐指数
1
解决办法
1035
查看次数

BDD还是TDD?你喜欢哪个?为什么?

我看到许多开发人员不同意在开始新项目时使用哪种测试方式.我想知道你为什么选择这种特殊风格而不是另一种风格.

testing tdd bdd

2
推荐指数
1
解决办法
692
查看次数

在插件中混淆activerecord方法

我正在尝试编写一个插件,以下列方式为ActiveRecord中的某些方法添加别名:

class Foo < ActiveRecord::Base
  include MyOwnPlugin
  acts_as_my_own_plugin :methods => [:bar]

  def bar
    puts 'do something'
  end
end
Run Code Online (Sandbox Code Playgroud)

在插件内:

module MyOwnPlugin
  def self.included(base)    
    base.class_eval do
      extend ClassMethods
    end
  end
  module ClassMethods
    def acts_as_my_own_plugin(options)
      options[:methods].each do |m|
        self.class_eval <<-END
          alias_method :origin_#{m}, :#{m}
        END
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这种方法不起作用,因为当运行#acts_as_my_own_plugin时,Foo #bar尚未定义,因为它尚未运行.

把acts_as_my_own_plugin:方法=> [:巴] AFTER条函数声明将工作.然而,这并不漂亮.

我希望能够将acts_as_my_own_plugin置于类定义之上,就像大多数插件一样.

是否有另一种方法来满足这种条件?

ruby activerecord ruby-on-rails ruby-on-rails-plugins

2
推荐指数
1
解决办法
277
查看次数