Вы можете использовать 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?"
Осторожно after_initialize
запускается каждый раз, когда ActiveRecord делает Foo.new
(вызовы типа new
, find
, first
и т. Д.), См. Руководство по рельсам
Так что вы, вероятно, хотите что-то вроде этого 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