Mixin для определения ассоциаций моделей в Rails 3.1

У меня есть ряд различных моделей, каждая из которых имеет полиморфную ассоциацию с моделью свойств. Я пытаюсь написать миксин, чтобы немного высушить код, но он не работает, пожалуйста, не могли бы вы предложить некоторую помощь в отладке. Мой миксин выглядит так...

module ModelWithProperties
    def self.included?(base)
        base.class_eval do
            has_many :properties, :as=>:parent
        end
    end

    def examplesharedfunction
        /// stuff here
    end
end

И тогда мои модели выглядят так...

class Myobjects < ActiveRecord::Base
    include ModelWithProperties
end

Однако, когда я запускаю все это, ассоциация, похоже, приняла («неопределенные свойства метода» для #can получить доступ к примерам общей функции.

Любые подсказки/советы?


person user1129657    schedule 04.01.2012    source источник


Ответы (1)


Хук, который вызывается при включении модуля, self.included, а не self.included?.

Вы также можете использовать ActiveSupport::Concern

module M
  extend ActiveSupport::Concern

  included do
    has_many :properties, :as=>:parent
  end
end
person Frederick Cheung    schedule 04.01.2012