Я пытаюсь динамически добавлять ключи в документы 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
Рассматриваемый код доступен здесь и здесь.
form — родственная модель. Я хочу создать ключи для текущей модели (я) на основе того, что есть у form#fields.
Проблема в том, что если я создам две модели, у них обоих будут одинаковые ключи от обеих моделей.
self.class.send(:key...) добавляет ключи к модели.
Почему они добавляются в обе модели?
Это потому, что метод вызывается в контексте класса?
Как я могу повлиять только на отдельный экземпляр?