0

Я пытаюсь расширить модель рельсов из драгоценного камня.Неопределенный метод принадлежит_сортировать Rails, почему?

Использование озабоченность Я был в состоянии расширить методы класса, но я не могу расширить ассоциации. included do возвращение undefined method belongs_to. Я думаю, что Rails не может загрузить класс правильно ...

модели находится в двигателе, и я пытаюсь получить к нему доступ из моей жемчужины.

Вот код:

# mygem/config/initializers/mymodel_extension.rb 
require 'active_support/concern' 

module MymodelExtension 
    extend ActiveSupport::Concern 

    # included do 
    # belongs_to :another 
    # end 

    class_methods do 
    def swear 
     return "I'm not doing it again" 
    end 
    end 

end 

class Myengine::Mymodel 
    include MymodelExtension 
end 

Из командной строки:

Myengine::Mymodel.swear 
# => "I'm not doing it again" 

Если я раскомментировать included do я получаю эту ошибку undefined method 'belongs_to' for Myengine::Mymodel:Class (NoMethodError).

ответ

2

Myengine::Mymodel класс должен наследовать от ActiveRecord::Base, чтобы иметь belongs_to определенный метод.

ActiveRecord::Base содержит кучу модулей, один из которых - Associations, где определен belongs_to association.

+0

Один вопрос: если я делаю 'класс Spina :: PagePart

+0

@ a.barbieri нет такой вещи, как расширение класса в Ruby. Вы наследуете. Любые методы, определенные в вашем классе (если по ЛЮБЫМ шансам они также определены в «AR :: Base») имеют приоритет, поэтому не стоит беспокоиться –

Смежные вопросы