gpt4 book ai didi

使用 MongoMapper 进行 Ruby 元编程

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:14 25 4
gpt4 key购买 nike

我正在尝试向 MongoMapper 文档动态添加键。

def build(attrs={})
doc = self.new
apply_scope(doc)
doc.set_up_keys!
doc.attributes = attrs
doc
end

def set_up_keys!
return unless form

form.fields.each do |f|
next if self.keys.include?(f.underscored_name)

self.class.send(:key, f.underscored_name, f.keys['default'].type, :required => f.required, :default => f.default)
end
end

有问题的代码可用herehere .

form 是一个相关的模型。我想根据 form#fields 的内容在当前模型(自身)上创建键。

问题是,如果我创建两个模型,它们都具有来自两个模型的相同 key 。

self.class.send(:key...) 将键添加到模型。

为什么将它们添加到两个模型中?

是不是因为该方法是在类上下文中调用的?

我怎样才能只影响单个实例?

最佳答案

Mongomapper 按类定义模型。此类的所有实例共享模型的键。如果您想即时创建模型,您可能需要 dynamically create a class ,并向其中添加 key :

def build(attrs={})
c = Class.new(self.class)
doc = c.new
apply_scope(doc)
doc.set_up_keys!
doc.attributes = attrs
doc
end

关于使用 MongoMapper 进行 Ruby 元编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21853671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com