gpt4 book ai didi

ruby-on-rails - 相当于“after_new”的Rails回调

转载 作者:行者123 更新时间:2023-12-03 14:31:44 25 4
gpt4 key购买 nike

现在,我找不到在第1行和第2行之间生成回调的方法:

f = Foo.new
f.some_call
f.save!


有什么方法可以模拟有效的after_new回调吗?现在,我正在使用after_initialize,但是使用它会带来潜在的性能问题,因为它会触发许多不同的事件。

最佳答案

您可以使用after_initialize回调

# app/models/foo.rb
class Foo < ActiveRecord::Base
after_initialize :some_call

def some_call
puts "Who you gonna call?"
end
end

# rails console
> foo = Foo.new # => "Who you gonna call?"
> foo = Foo.first # => "Who you gonna call?"


请注意,每次ActiveRecord执行 after_initialize(如 Foo.newnewfind之类的调用)时都会触发 first,请参见 Rails Guide

所以您可能想要这样的 after_initialize :some_call, :if => :new_record?

# app/models/foo.rb
class Foo < ActiveRecord::Base
after_initialize :some_call, :if => :new_record?

def some_call
puts "Who you gonna call?"
end
end

# rails console
> foo = Foo.new # => "Who you gonna call?"
> foo = Foo.first

关于ruby-on-rails - 相当于“after_new”的Rails回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2836206/

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