理解代码流

时间:2009-09-14 01:08:04

标签: ruby-on-rails

嗨,我是一个完整的新手,让我的脚踏上Rails,请有人帮助我理解代码的流程

当我们不直接调用它时,如何调用CreditCardCallbacks,def before_validation(model)。

class CreditCardCallbacks
# Normalize the credit card number
def before_validation(model)
model.cc_number.gsub!(/[-\s]/, '' )
end
end

class Order < ActiveRecord::Base
before_validation CreditCardCallbacks.new
# ...
end

class Subscription < ActiveRecord::Base
before_validation CreditCardCallbacks.new
# ...
end

提前致谢

4 个答案:

答案 0 :(得分:2)

ActiveRecord公开了许多“生命周期”回调,允许您连接到验证和持久性过程的各个部分。有关详细信息,请参阅Rails Guide to ActiveRecord Validations and Callbacks

(如果您对实现回调的源代码感兴趣,可以查看它here,但如果您从未在Ruby中进行任何元编程,则可能会有点混乱。 / p>

答案 1 :(得分:0)

这是rails的dsl特性所在.Rails知道在任何验证代码运行之前应该调用它的方法的名称。特别是在调用Validations.validate之前

答案 2 :(得分:0)

模型的有效?函数在执行实际验证之前会调用 before_validation

答案 3 :(得分:0)

Pro Active Record:使用Ruby和Rails的数据库

作者:Kevin Marshall,Chad Pytel,Jon Yurek - 2007 - 304页

获取该书并阅读。彻底而清晰地解释您想知道的一切。有点旧但仍然适用。