在模型之间共享属性 - Datamapper

时间:2013-05-30 18:02:28

标签: single-table-inheritance sti ruby-datamapper

我有两个共享一些相同属性的模型,所以我想设置一个表继承结构。在做了一些研究之后,我发现我可以通过执行以下操作来使用模块来实现相同的目的:

module CommonFields
  def self.included base
    base.class_eval do
      include DataMapper::Resource

        property :type, base::Discriminator
        property :enable_feature1, base::Boolean, :default => false
        property :enable_feature2, base::Boolean, :default => false
    end
  end
end

class A
  include CommonFields

    property: title, String
end

class B
  include CommonFields
end

然而,当我做rake db:automigrate我得到:

CommonFields的未定义方法`属性':模块 /usr/local/rvm/gems/ruby-1.9.2-p290/gems/dm-core-1.2.0/lib/dm-core/associations/relationship.rb:252:in“parent_key”

有什么想法吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

我想我知道问题所在。我没有意识到的是,我在B类中引用了一个引用CommonFields的关联。这就是造成这个问题的原因!需要重新考虑我将如何做到这一点。