Simple Railtie Extension de Active Record
-
27-09-2019 - |
Question
Je crée un Rails 3.0.3 bijou et ne peut pas l'obtenir au travail:
# 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
je reçois undefined local variable or method 'acts_as_fail'
quand j'ajoute acts_as_fail
à l'un de mes modèles ActiveRecord
. Aide s'il vous plaît! Je suis extrêmement frustré par ce code apparemment trivial! Merci!
La solution
Vous définissez self.include
(4ème ligne vers le bas), lorsque la méthode est correcte self.included
.
Autres conseils
Vous pouvez simplifier le code en utilisant directement 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
Ceci est une bonne lecture: http://yehudakatz.com/2009/11/12/better-ruby- idiomes /
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow