Semplice estensione Railtie di Active Record
-
27-09-2019 - |
Domanda
Sto creando un Rails 3.0.3 gioiello e non può farlo funzionare:
# attached.rb
module Attached
require 'attached/railtie' if defined?(Rails)
def self.include(base)
base.send :extend, ClassMethods
end
module ClassMethods
def acts_as_fail
end
end
end
# attached/railtie.rb
require 'attached'
require 'rails'
module Attached
class Railtie < Rails::Railtie
initializer 'attached.initialize' do
ActiveSupport.on_load(:active_record) do
ActiveRecord::Base.send :include, Attached
end
end
end
end
ottengo undefined local variable or method 'acts_as_fail'
quando aggiungo acts_as_fail
a nessuno dei miei modelli ActiveRecord
. Per favore aiuto! Sono estremamente frustrato con questo codice apparentemente banale! Grazie!
Soluzione
Si sta definendo self.include
(4 ° linea verso il basso), quando il metodo corretto è self.included
.
Altri suggerimenti
È possibile semplificare il codice utilizzando direttamente extend
:
# attached.rb
module Attached
require 'attached/railtie' if defined?(Rails)
def acts_as_fail
end
end
# attached/railtie.rb
require 'attached'
require 'rails'
module Attached
class Railtie < Rails::Railtie
initializer 'attached.initialize' do
ActiveSupport.on_load(:active_record) do
ActiveRecord::Base.send :extend, Attached
end
end
end
end
Questa è una buona lettura: http://yehudakatz.com/2009/11/12/better-ruby- Modi di dire /
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow