Mixin在Rails 3.1中定义模型关联

时间:2012-01-04 10:14:17

标签: ruby-on-rails models mixins

我有一系列不同的模型,每个模型与Properties模型共享多态关联。我正在尝试编写一个mixin来干掉代码,但它们没有用,请你能提供一些调试帮助。我的mixin看起来像这样......

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

但是,当我运行所有这些时,关联似乎已经采取了('undefined方法'特性'#can访问examplesharedfunction。

任何线索/提示?

1 个答案:

答案 0 :(得分:4)

包含模块时调用的钩子是self.included而非self.included?

您也可以使用ActiveSupport::Concern

module M
  extend ActiveSupport::Concern

  included do
    has_many :properties, :as=>:parent
  end
end