如何初始化动态创建类

时间:2018-01-15 11:09:36

标签: ruby-on-rails mongoid

我在运行时为我的MongoDB模型创建动态类:

  k = Class.new()do
    include Mongoid::Document
    include Mongoid::Attributes::Dynamic
    ...
    ...
  end

我有一个objecgt 实体,它有一个属性 lookup 。当我创建新类k时,我想将entity.lookup分配给这个新类,以便我可以稍后访问此属性查找:

puts k.lookup

我该怎么做?我尝试了很多东西(例如):

  k = Class.new()do
    include Mongoid::Document
    include Mongoid::Attributes::Dynamic

    attr_accessor :lookup

    @lookup = entity.lookup
    ...
    ...
  end

但这不起作用!有什么想法吗?

1 个答案:

答案 0 :(得分:0)

要理解的重要一点是k是一个类。它没有(动态)属性'lookup`。只有该类的实例才能拥有该实例。观察:

k = Class.new do
  include Mongoid::Document

  store_in collection: 'kk'

  field :lookup, type: String, default: 'blah'
end


k.new.lookup # => 'blah'