Mam pewien kod w wtyczce stylu silnika, która zawiera niektóre modele. W mojej aplikacji chcę rozszerzyć jeden z tych modeli. Udało mi się dodać do tego modelu zarówno metody instancji, jak i klasy, włączając moduł z inicjalizatora.Rozszerz model w wtyczce z "has_many" używając modułu
Jednak nie mogę dodawać asocjacji, wywołań zwrotnych itp. Otrzymuję błąd "nie znaleziono metody".
/libs/qwerty/core.rb
module Qwerty
module Core
module Extensions
module User
# Instance Methods Go Here
# Class Methods
module ClassMethods
has_many :hits, :uniq => true # no method found
before_validation_on_create :generate_code # no method found
def something # works!
"something"
end
end
def self.included(base)
base.extend(ClassMethods)
end
end
end
end
end
/initializers/qwerty.rb
require 'qwerty/core/user'
User.send :include, Qwerty::Core::Extensions::User
Gotcha: Podczas przeładowywania! w konsoli klasa zostaje przeładowana, ale ponieważ moduł (w moim przypadku) jest wywoływany z inicjalizatora, moduł nie jest ponownie stosowany. – Kris
Ponadto w tej chwili wydaje się, że kod w module jest uwzględniany tylko podczas korzystania z konsoli, gdy ten sam kod jest wywoływany ze sterownika, który nie działa. Chciałbym opublikować przykład kodu, ale odpowiedź nie wydaje się właściwa (to nie jest forum) ... – Kris
KONTROLER: render: text => User.new.respond_to? ('Hits') i return # => false CONSOLE: User.new.respond_to? ('hits') # => true PREEMPT: Uruchomiłem ponownie serwer :) – Kris