gpt4 book ai didi

ruby-on-rails-3 - 如何在Rails 3中使用 'after_initialize'?

转载 作者:行者123 更新时间:2023-12-03 07:05:44 24 4
gpt4 key购买 nike

更新

我错误地检查了edgerails指南,而不是当前正确的Rails 3指南(其中没有提到after_initialize)。不知道为什么edgerails指南是“不正确的”,但我认为edgerails指南应该是最新的最新指南?

我按原样保留这个问题,以防万一有人来寻找相同的“问题”。

宏式调用 after_initialize 是正确的方法。

<小时/><小时/>

应该将 after_initialize 用作方法或宏样式调用吗?

这可行,但会给出弃用警告:

def after_initialize
logger.info "Called after_initialize"
end

弃用警告:Base#after_initialize 已弃用, 请使用 Base.after_initialize :方法代替。

这有效,并且没有警告:

after_initialize :do_this_after_initialize
def do_this_after_initialize
logger.info "Called after_initialize"
end

但是 10.4 after_initialize and after_find 中的Active Record 验证和回调指南说:

...If you try to register after_initialize or after_find using macro-style class methods, they will just be ignored. This behaviour is due to performance reasons, since after_initialize and after_find will both be called for each record found in the database, significantly slowing down the queries...

这意味着宏样式的使用与方法样式的方式相比效率低下?

(我猜指南是错误的,因为代码为王:D)

<小时/>另一个更新

<小时/>

一个commit here从2011年1月28日开始,建议正确的方法仍然是使用宏风格的调用,而不是def after_initialize

最佳答案

关于ruby-on-rails-3 - 如何在Rails 3中使用 'after_initialize'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4906704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com