嗨,我是一个完整的新手,让我的脚踏上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
提前致谢
答案 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页
获取该书并阅读。彻底而清晰地解释您想知道的一切。有点旧但仍然适用。