提交 ae3767c7 编写于 作者: J Jon Leighton

Fix observers with AR::Model

上级 a205bf87
......@@ -3,6 +3,7 @@
module ActiveRecord
ActiveSupport.on_load(:active_record_config) do
mattr_accessor :whitelist_attributes, instance_accessor: false
mattr_accessor :mass_assignment_sanitizer, instance_accessor: false
end
module AttributeAssignment
......
......@@ -39,6 +39,7 @@ def #{name}; ActiveRecord::Model.#{name}; end
module Model
extend ActiveSupport::Concern
extend ConnectionHandling
extend ActiveModel::Observing::ClassMethods
# This allows us to detect an ActiveRecord::Model while it's in the process of being included.
module Tag; end
......
......@@ -110,20 +110,21 @@ class Railtie < Rails::Railtie
config.after_initialize do |app|
ActiveSupport.on_load(:active_record) do
ActiveRecord::Base.instantiate_observers
ActiveRecord::Model.instantiate_observers
ActionDispatch::Reloader.to_prepare do
ActiveRecord::Base.instantiate_observers
ActiveRecord::Model.instantiate_observers
end
end
ActiveSupport.on_load(:active_record) do
if app.config.use_schema_cache_dump
filename = File.join(app.config.paths["db"].first, "schema_cache.dump")
if File.file?(filename)
cache = Marshal.load File.binread filename
if cache.version == ActiveRecord::Migrator.current_version
ActiveRecord::Base.connection.schema_cache = cache
ActiveRecord::Model.connection.schema_cache = cache
else
warn "schema_cache.dump is expired. Current version is #{ActiveRecord::Migrator.current_version}, but cache version is #{cache.version}."
end
......
......@@ -618,5 +618,26 @@ def index
make_basic_app
assert app.config.colorize_logging
end
test "config.active_record.observers" do
add_to_config <<-RUBY
config.active_record.observers = :foo_observer
RUBY
app_file 'app/models/foo.rb', <<-RUBY
class Foo < ActiveRecord::Base
end
RUBY
app_file 'app/models/foo_observer.rb', <<-RUBY
class FooObserver < ActiveRecord::Observer
end
RUBY
require "#{app_path}/config/environment"
ActiveRecord::Base
assert defined?(FooObserver)
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册